小编Gid*_*aul的帖子

如何在 Compose NavGraph 内的两个或多个 Jetpack 可组合项之间共享视图模型?

考虑这个例子。

对于身份验证,我们将使用 2 个屏幕 - 一个屏幕用于输入电话号码,另一个屏幕用于输入 OTP。

这两个屏幕都是用 Jetpack Compose 制作的,对于 NavGraph,我们使用组合导航。

另外我必须提到 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>())
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

那么,我们如何在 Jetpack 组合 NavGraph 中的两个或多个可组合项之间共享相同的视图模型呢?

kotlin koin android-jetpack-compose jetpack-compose-navigation

23
推荐指数
2
解决办法
1万
查看次数