首先,你有 mainActivity 和这个 navGraph :
AnimatedNavHost(
navController = navController,
startDestination = "onBoarding",
modifier = modifier
) {
onBoardingScreen(
navigateToLegal = {
navController.navigateToLegal()
}
nestedGraphs = {
legalScreen()
}
)
loginScreen(
nestedGraphs = {
registerScreen()
recoverScreen()
}
)
mainScreen(
nestedGraphs = {
productScreen()
profileScreen()
}
)
}
然后在每个屏幕中你可以有这样的东西:
fun NavGraphBuilder.onBoardingScreen(
nestedGraphs: NavGraphBuilder.() -> Unit,
navigateToLegal : () -> Unit
) {
navigation(
route = "onBoardingGraphRoutePattern",
startDestination ="start"
) {
composable(
route ="start",
) {
StartRoute()
}
nestedGraphs()
}
}
对于每个嵌套屏幕,我们有两个这样的函数:
1-
fun NavController.navigateToLegal(
navOptions: NavOptions? = null
) {
this.navigate("legal", navOptions)
}
2-
fun NavGraphBuilder.legalScreen() {
composable(
route = "legal",
) {
LegalRoute()
}
}
我认为通过这种模式,您可以在每个屏幕的主导航和嵌套导航图中拥有一个导航控制器,并且可以处理您的应用程序
有关更多信息和更多示例,您可以阅读此项目:现在在安卓系统中 https://github.com/android/nowinandroid
希望对你有帮助:)