Jetpack 将深层链接组合到嵌套导航中

Posted

技术标签:

【中文标题】Jetpack 将深层链接组合到嵌套导航中【英文标题】:Jetpack compose deep link into nested navigation 【发布时间】:2021-12-22 15:58:05 【问题描述】:

according to the recommendation of android developers成长项目推荐使用嵌套导航

NavHost(navController, startDestination = "home") 
    ...
    loginGraph(navController)
    ...


fun NavGraphBuilder.loginGraph(navController: NavController) 
    navigation(startDestination = "username", route = "login") 
        composable("username")  ... 
        composable("password")  ... 
        composable("registration")  ... 
    

但是我应该怎么做才能像本示例一样在导航中深度链接到导航,以便转到“用户名”可组合

我已经设法像developer page 中显示的那样进行正常的深层链接

用一个可组合的嵌套导航包围内部嵌套导航并将深层链接放在那里会更好吗?

NavHost(navController, startDestination = "home") 
    ...
    val deeplinkuri = "..."
    composable(
        route="loginGraphScreen",
        deepLinks = listOf(navDeepLink 
                    uriPattern = deeplinkuri
                ),
    )
        loginGraph(navController)
    
    ...

【问题讨论】:

你是怎么解决的?我也有同样的问题... @Eitan 检查我所做的 asnwer,但我没有设法深层链接到嵌套导航 【参考方案1】:

我不能用深层链接做一个嵌套图,所以我只是让它像 NavGraphBuilder 的扩展

它仍然可以使代码更易于管理,同时具有深层链接

fun NavGraphBuilder.loginGraph(navController: NavController) 
    composable("username", deepLinks= ....)  ... 
    composable("password")  ... 
    composable("registration")  ... 

【讨论】:

以上是关于Jetpack 将深层链接组合到嵌套导航中的主要内容,如果未能解决你的问题,请参考以下文章

导航: 嵌套导航图和 <include> | MAD Skills

与 Jetpack 导航一起使用时,TextField 会中断组合吗?

在 Android 导航组件中检索目的地的深层链接

使用深层链接导航 | MAD Skills

在发出 OAuth 令牌交换请求时,如何进行深层链接并导航到“LogInLoading”屏幕?

随便嵌套?Jetpack Compose 到底优秀在哪里