将 viewModel 注入到 @Composable

Waf*_*_ck 10 android dependency-injection kotlin koin android-jetpack-compose

我的 ProfileScreen 有 viewModel。

@Composable
fun ProfileScreen() {
    val viewModel: ProfileViewModel = viewModel()
    ...
}
Run Code Online (Sandbox Code Playgroud)

每次我调用 ProfileScreen 时,都会创建新的 viewModel。我如何为我的 ProfileScreen 只创建一个 viewModel 实例。我尝试按照https://insert-koin.io/docs/reference/koin-android/compose/注入 viewModel但当我尝试时

val viewModel: ProfileViewModel = viewModel()

Android Studio 抛出错误。

jer*_*ell 3

或者用于remember()在重构调用之间保存实例 ViewModel

@Composable
fun ProfileScreen() {
    val viewModel = remember { ProfileViewModel() }
    ...
}
Run Code Online (Sandbox Code Playgroud)

此外,rememberSaveable允许在重新创建活动之间保存状态(也称为数据类)