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

Jetpack Compose:获取带参数的导航实际路由

获取NavController带实际参数的当前路由路径

直接调用navController.currentBackStackEntry?.destination?.route得到的是导航图中定义的模板路径(如chat/{id}),因为这个属性存储的是路由的占位符模板,而非实际跳转时填充参数后的路径。以下是两种解决方法:

方法一:手动替换占位符参数

通过当前回退栈条目(NavBackStackEntry)的arguments获取实际参数值,再替换模板中的占位符:

val currentEntry = navController.currentBackStackEntry ?: return
val templateRoute = currentEntry.destination.route ?: return
val args = currentEntry.arguments ?: return

val actualRoute = templateRoute.replace(Regex("\\{(.+?)\\}")) { matchResult ->
    val paramKey = matchResult.groupValues[1]
    args.get(paramKey)?.toString() ?: ""
}
// actualRoute即为带实际参数的路径,例如chat/127436112

方法二:利用NavBackStackEntry的uri属性(Navigation 2.4.0+)

从Navigation 2.4.0版本开始,NavBackStackEntry新增了uri属性,该属性直接包含带实际参数的完整路径,只需提取路径部分即可:

val currentEntry = navController.currentBackStackEntry ?: return
val actualPath = currentEntry.uri.path?.removePrefix("/") ?: ""
// actualPath结果为chat/127436112(去掉了开头的斜杠,可根据需求调整)

注意:如果参数可能为空,需根据业务场景添加空值处理逻辑,避免出现异常或不符合预期的路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 06:55:30