我有一个基于 JetBrains Compose 的 Android 和桌面多平台应用程序。在
common
模块中,我有屏幕(作为可组合函数),其 ViewModel 继承自 dev.icerock.moko.mvvm.viewmodel.ViewModel:
import dev.icerock.moko.mvvm.viewmodel.ViewModel
class MyIpViewModel() : ViewModel() {
// Some logic
}
屏幕:
@Composable
fun MyScreen() {
val viewModel = // How to load MyScreenViewModel() here?
Column {
// Screen content
}
}
我需要在屏幕内加载 ViewModel。在 Android 中,可以添加依赖项
androidx.lifecycle:lifecycle-viewmodel-compose
,然后使用 ViewModelProvider
加载 ViewModel。但如何在 Koltin Desktop 中使用 ViewModel?
Compose Multiplatform 1.6.10 添加了对常见 ViewModel 的支持。
参见官方文档。
kotlin {
sourceSets {
commonMain.dependencies {
implementation("org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.8.0")
@Composable
fun MyComposable(
viewModel: MyViewModel = viewModel { MyViewModel() },
) {
// ...
}