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

Jetpack Compose Navigation设置popUpTo后登录欢迎页未从回退栈清除

问题原因

你当前的popUpTo配置仅指定了移除LoginScreen及其之后入栈的页面,位于LoginScreen之前的登录欢迎页未被纳入弹出范围,因此会保留在回退栈中,首页点击返回键就会退回到该页面。

解决方案

方案1:指定弹出到登录流程的首个页面

将popUpTo的目标改为登录流程的首个路由(即欢迎页对应的路由Screen.WelcomeScreen.route),开启inclusive = true即可清空所有登录相关页面:

composable(Screen.LoginScreen.route) {
    LoginScreen {
        Log.d("AppMainNavigation", "AppMainNavigation: ${navController.backQueue}")
        navController.navigate(Screen.HomeBaseScreen.route){
            // 弹出到欢迎页,包含欢迎页本身,清空整个登录流程栈
            popUpTo(Screen.WelcomeScreen.route){
                inclusive = true
            }
            launchSingleTop = true
        }
    }
}

方案2:清空整个导航栈

如果希望直接清空所有历史页面,让首页成为栈内唯一页面,可以直接弹出到导航图根节点:

navController.navigate(Screen.HomeBaseScreen.route) {
    popUpTo(navController.graph.id) {
        inclusive = true
    }
}

额外注意

你使用的navigation-compose:2.4.0-alpha02是早期测试版本,存在多个导航栈操作的已知缺陷,调整配置后如果仍有异常,建议升级到2.4.0及以上的稳定版本即可解决版本自带的bug。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 03:06:07