根据嵌套图的文档。
嵌套图封装了它的目的地。与根图一样,嵌套图必须将目的地标识为起始目的地。嵌套图之外的目的地(例如根图上的目的地)仅通过其起始目的地访问嵌套图。
在 Compose Navigation 的文档中提到嵌套图封装了它的目的地。
嵌套图封装了它的目的地。
在我使用 Compose Navigation 的项目中,有 4 个目的地,其中之一是嵌套图。而且我可以安全地从外部图中的任何目的地到达嵌套图的特定目的地。而这个特定的目的地并不是嵌套图的起始目的地。项目中使用的版本 androidx.navigation:navigation-compose:2.5.0-alpha01
代码示例:
@Composable
fun SocialNewsNavGraph(navController: NavHostController) {
NavHost(
navController = navController,
startDestination = SocialNewsDestinations.NEWS_LINE_ROUTE
) {
navigation(
startDestination = AuthorizationDestinations.ONBOARDING,
route = SocialNewsDestinations.AUTHORIZATION
) {
composable(AuthorizationDestinations.ONBOARDING) {
OnboardingScreen()
}
composable(AuthorizationDestinations.LOGIN) {
LoginScreen()
}
composable(AuthorizationDestinations.REGISTRATION) {
RegistrationScreen()
}
}
composable(SocialNewsDestinations.NEWS_LINE_ROUTE) {
// Navigating to a Specific Destination in a Nested Graph
NewsLine(navigateToAuthorizationGraph = { navController.navigate(AuthorizationDestinations.LOGIN)} )
}
composable(SocialNewsDestinations.CREATE_NEWS_ROUTE) {
CreateNews()
}
composable(SocialNewsDestinations.USER_INFO_ROUTE) {
User()
}
}
}
目的地:
object SocialNewsDestinations {
const val CREATE_NEWS_ROUTE = "create_news"
const val NEWS_LINE_ROUTE = "news_line"
const val USER_INFO_ROUTE = "user_info"
const val AUTHORIZATION = "authorization"
}
object AuthorizationDestinations {
const val ONBOARDING = "onboarding"
const val LOGIN = "login"
const val REGISTRATION = "registration"
}
如果我们以导航图(一种 XML 资源)为例,我们无法选择特定的嵌套图目的地作为目的地。
我们如何使用 jetpack Compose Navigation 封装 nestead 图形目的地?