我尝试在jetpack compose导航中发送可选参数,因为如果我不发送可选参数,这次它会在每次导航到屏幕时都要求我输入参数,这会使屏幕相互连接并导致问题。
我有一个这样的屏幕:
sealed class RegisterScreen(val route: String) {
object ForgotPasswordScreen : RegisterScreen("forgot_password_screen")
object ForgotPasswordDetailScreen :RegisterScreen("forgot_password_detail_screen")
}
例如,我有一个密封的类,其中有这样的类,我想给予一个可选的布尔类型参数。
听到是我的导航图:
fun NavGraphBuilder.registerLoginNavGraph(
navHostController: NavHostController
) {
navigation(
startDestination = RegisterScreen.SignUpStartRegisterScreen .route,
route = REGISTER_LOGIN_ROUTE
) {
composable(RegisterScreen.ForgotPasswordScreen.route) {
ForgotPasswordScreenRoute(navHostController)
}
composable(RegisterScreen.ForgotPasswordDetailScreen.route) {
ForgotPasswordDetailScreen(navHostController)
}
}
}
我想从ForgotPasswordScreen转到ForgotPasswordDetailScreen,并向ForgotPasswordDetailScreen发送一个可选的boolean类型参数。我怎么能按照这个结构来做呢?我该如何适应。我无法将在互联网上做的事情设置为我自己的代码,你能帮助我吗?用代码解释会更好
1条答案
按热度按时间6rqinv9w1#
添加可选参数
可选参数的定义遵循查询参数语法
("?argName={argName}")
它们必须有一个defaultValue
集,或者有nullable = true
(隐式地将默认值设置为null)这意味着所有可选参数必须作为列表显式地添加到composable()函数中:现在,即使没有参数传递到目标,也会使用defaultValue“user1234”。
通过路由处理参数的结构意味着您的组合对象完全独立于Navigation,并使它们更易于测试。
请记住,null值将作为“null”字符串返回,因此要实际检查是否存在,您需要执行以下操作: