考虑这个例子。
对于身份验证,我们将使用 2 个屏幕 - 一个用于输入电话号码,另一个用于输入 OTP。
这两个屏幕都是在 Jetpack Compose 中制作的,对于 NavGraph,我们使用的是 compose 导航。
另外我不得不提一下,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 中的两个或多个可组合组件之间共享相同的视图模型呢?