考虑这个例子。
对于身份验证,我们将使用2个屏幕 - 一个屏幕用于输入电话号码,另一个屏幕用于输入OTP。
这两个屏幕都是使用Jetpack Compose制作的,并且对于NavGraph,我们正在使用Compose Navigation。
另外,我必须提到DI是由Koin处理的。
那么,在Jetpack Compose NavGraph中,我们如何在两个或多个组合中共享相同的ViewModel呢?
对于身份验证,我们将使用2个屏幕 - 一个屏幕用于输入电话号码,另一个屏幕用于输入OTP。
这两个屏幕都是使用Jetpack Compose制作的,并且对于NavGraph,我们正在使用Compose Navigation。
另外,我必须提到DI是由Koin处理的。
val navController = rememberNavController()
NavHost(navController) {
navigation(
startDestination = "phone_number_screen",
route = "auth"
) {
composable(route = "phone_number_screen") {
// Get's a new instance of AuthViewModel
PhoneNumberScreen(viewModel = getViewModel<AuthViewModel>())
}
composable(route = "otp_screen") {
// Get's a new instance of AuthViewModel
OTPScreen(viewModel = getViewModel<AuthViewModel>())
}
}
}
那么,在Jetpack Compose NavGraph中,我们如何在两个或多个组合中共享相同的ViewModel呢?
SavedStateHandle
?它只包含导航项捆绑包,不能控制当前屏幕。我不确定它如何完成相同的工作。 - Phil Dukhov