You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jetpack Compose嵌套导航中如何获取当前目标所属主路由?

获取Jetpack Compose嵌套导航图的根路由

NavController确实没有直接提供这类API,但可以通过遍历目的地的父级链来实现需求。直接写个扩展函数就能搞定:

fun NavController.getNestedGraphRootRoute(): String? {
    var currentNode = currentDestination ?: return null
    var parentNode = currentNode.parent

    // 向上遍历父级,直到到达嵌套图的根节点(父级的父级为空,说明当前节点是嵌套图的顶层)
    while (parentNode != null && parentNode.parent != null) {
        currentNode = parentNode
        parentNode = currentNode.parent
    }

    return currentNode.route
}

用法示例

比如当前navController.currentDestination?.route返回"site1home",调用navController.getNestedGraphRootRoute()就能拿到它所属的嵌套图根路由"home"。

逻辑说明

  • 从当前目的地出发,不断向上追溯parent节点
  • 当父级的父级为空时,当前节点就是嵌套图的根(因为根导航图的parent为null,嵌套图的根节点的父级是根导航图)
  • 如果当前目的地本身就是根导航图的直接子节点,函数会返回它自己的路由(如果有定义)

内容的提问来源于stack exchange,提问作者Vaio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 05:25:46