Jetpack 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
相关产品推荐
相关产品推荐

