android - 如何在 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()
}
}
}
解决方案
推荐阅读
- javascript - 我可以扩展我的 div,但如何缩小它?
- laravel - 同时使用 web 和 token api gaurd 时的异常处理
- vim - Vim autocmd 没有正确映射映射
- android - variant.getAssemble() 已过时并已替换为 variant.getAssembleProvider()
- java - 如何在 Android MVVM 架构中实现对话框选择选项
- c# - 如何修复 MVC 属性路由中的斜线“/”问题?
- android - 无法解析片段中的方法“recreate()”
- kotlin - 在 Kotlin 中使用 foreach 循环 BigInteger 值
- django - 如何在 Django 中的 mp3(媒体)请求上将标头“接受范围”设置为 HTTPResponse 中的字节
- python - python重命名子目录中的所有文件