Как использовать Composables из Common в Compose Web?
Я создал простой веб-проект Compose, используя руководство по началу работы . Он работает только при использовании веб-API, поэтому Composables, напримерDiv
иSpan
.
Однако весь смысл мультиплатформенности заключается в возможности повторного использования компонентов, поэтому я добавил модули и (Compose Desktop, а не Android). Я могу использовать Composables изjvm
все в порядке, но когда я использую их в веб-проекте, я получаю ошибки в консоли браузера:CompositionLocal X not present
, где X включает в себяLocalDensity
,LocalLayoutDirection
,LocalViewConfiguration
,LocalFontFamilyResolver
иLocalInputManager
. Возможно, я смогу предоставить их по одному, но это всего лишь настройка, которая должна быть автоматической. Итак, что я могу сделать, чтобы использовать свойcommon
Составные части вjs
с Compose Web?
The build.gradle.kts
файл содержит:
plugins {
kotlin("multiplatform")
id("org.jetbrains.compose")
}
kotlin {
jvm("desktop") { ... }
js(IR) {
browser()
binaries.executable()
}
sourceSets {
val commonMain by getting {
dependencies {
api(compose.runtime)
api(compose.foundation)
api(compose.material)
}
}
val desktopMain by getting { ... }
val jsMain by getting {
dependencies {
api(compose.web.core)
api(compose.runtime)
}
}
}
}
// plus the afterEvaluate workaround from the guide, which isn't relevant for this question
В настоящее время использую Kotlin 1.8.10 и Compose 1.3.1.