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

Jetpack Compose中如何通过Auth嵌套导航图传递手机号至OTP页面?

在Jetpack Compose嵌套导航中传递手机号到OtpScreen的实现方案

要在Auth嵌套导航里从LoginScreen把手机号传给OtpScreen,只需按以下步骤修改现有代码:

1. 更新Screens路由定义,添加参数占位符

给Otp路由添加参数占位符,并新增方法拼接带参数的完整路由:

sealed class Screens(val route: String) {
    object ScreenLoginRoute : Screens(route = "Login")
    object ScreenOtpRoute : Screens(route = "Otp/{mobile}") {
        // 生成带手机号参数的路由
        fun createRoute(mobile: String) = "Otp/$mobile"
    }
    // 补充原代码缺失的AuthRoute定义
    object AuthRoute : Screens(route = "Auth")
}

2. 修改Auth嵌套导航图,配置参数类型

在Otp页面的composable中声明参数类型,让导航组件正确解析传递的参数:

fun NavGraphBuilder.authGraph(navController: NavController){
    navigation(startDestination = Screens.ScreenLoginRoute.route, route = Screens.AuthRoute.route){
        composable(route = Screens.ScreenLoginRoute.route) {backStackEntry ->
            LoginScreen(navController)
        }
        composable(
            route = Screens.ScreenOtpRoute.route,
            // 声明参数为字符串类型,可设置默认值避免参数缺失崩溃
            arguments = listOf(
                navArgument("mobile") {
                    type = NavType.StringType
                    defaultValue = ""
                }
            )
        ) { backStackEntry ->
            // 从导航栈条目里获取传递的手机号
            val mobile = backStackEntry.arguments?.getString("mobile") ?: ""
            OtpScreen(navController = navController, mobile = mobile)
        }
    }
}

3. 调整LoginScreen的跳转逻辑,传递手机号

在LoginScreen中调用navigate时,用createRoute方法拼接带手机号的路由:

// 假设mobileNumber是LoginScreen中获取到的用户手机号
navController.navigate(Screens.ScreenOtpRoute.createRoute(mobileNumber))

4. 确保OtpScreen正确接收参数

你的OtpScreen已定义mobile: String参数,现在只需确保导航图传递的参数能正确传入即可(步骤2已处理)。如果需要处理空参数场景,可在组件内补充判断:

@OptIn(ExperimentalMaterial3Api::class, ExperimentalComposeUiApi::class)
@Composable
fun OtpScreen(navController: NavController, mobile: String) {
    // 使用mobile参数,例如显示提示文本
    Text(text = "请输入${mobile}收到的验证码")
}

整个流程遵循Jetpack Compose Navigation的参数传递规范,避免了硬编码路由字符串的问题,确保嵌套导航内参数传递稳定可靠。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 22:08:33