首页 > 解决方案 > 如何在 Jetpack Compose 中切换嵌套导航图?

问题描述

例如,我有两个图:LoginGraph 和 HomeGraph。
我希望在第一次访问应用程序时向用户显示 LoginGraph 列中的所有屏幕。然后,在成功授权后,我会将布尔标志保存在某处,例如,在共享首选项中。

重新启动后,我会阅读,如果标志为真,则显示 HomeGraph 中的所有屏幕。

可以在没有完整代码的情况下解释一个简单的概念(加分是带有代码片段)

@Composable
fun RootNavigationHost(navController: NavHostController) {

    NavHost(navController = navController, startDestination = "Auth", route = "Root") {

        addAuthGraph(navController)
        addMainGraph(navController)
    }
}
private fun NavGraphBuilder.addAuthGraph(navController: NavHostController) {
    navigation(
        route = "Auth",
        startDestination = "Auth1"
    ) {
        composable("Auth1") {
            AuthScreen() {
                navController.navigate("Auth2")
            }
        }
        composable("Auth2") {
            PersonalDataScreen() {
                navController.navigate("Main")
            }
        }
    }
}
private fun NavGraphBuilder.addMainGraph(navController: NavHostController) {
    navigation(
        route = "Main",
        startDestination = "Home"
    ) {
        composable("Home") {
            HomeScreen() {
                navController.navigate("Other")
            }
        }
        composable("Other") {
            OtherScreen()
        }
    }
}

标签: androidkotlinandroid-jetpack-compose

解决方案


推荐阅读