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

Jetpack Compose Navigation可选参数正确配置咨询

解决Compose Navigation可选参数路由生成错误的问题

你的问题出在getRoute方法的实现上:你错误地将参数值用{}包裹起来,导致生成的路由字符串变成了${BASE_ROUTE}?$ARG_SEARCH_TEXT_DEEPLINK={}(当searchText为空时),NavController会把这个{}当作参数的实际值,而不是触发你在navArgument里设置的默认空字符串。

正确的路由生成逻辑

路由模板(getComposableSettings里的route)中的{参数名}是用来声明参数占位的语法,但生成实际跳转用的路由时,需要直接传递参数值,不需要加{};当参数为空时,完全可以省略这个查询参数,Navigation会自动使用你定义的默认值。

修正后的getRoute方法如下:

fun getRoute(searchText: String = ""): String {
    return if (searchText.isNotEmpty()) {
        "${BASE_ROUTE}?$ARG_SEARCH_TEXT_DEEPLINK=$searchText"
    } else {
        BASE_ROUTE
    }
}

验证逻辑

  • 当searchText为空时,直接返回BASE_ROUTE,导航到该页面时,ARG_SEARCH_TEXT_DEEPLINK会自动使用你设置的默认值"";
  • 当searchText有具体值时,生成带参数的路由,参数值会被正确传递,不需要额外处理括号。

另外确认你的getComposableSettings写法是正确的,这里的{${ARG_SEARCH_TEXT_DEEPLINK}}是路由模板的占位符语法,用于告诉Navigation这个位置需要接收参数,和实际生成路由的逻辑是分开的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 20:57:38