Jetpack 组合导航 popUpTo inclusive true 未从 backstack 清除可组合屏幕

时间:2021-06-07 08:43:21

标签: android android-jetpack-compose android-jetpack-navigation jetpack-compose-navigation

我正在使用 Jetpack Compose ui 版本 1.3.0-beta08 和导航 compose 版本 2.4.0-alpha02 以及具有所有新架构组件的工作 Bloom 应用程序。登录成功后,我需要清除所有以前的撰写登录屏幕,但即使添加了 popUpTo("HomeScreen"){inclusive = true},当我从主屏幕单击返回时,我的登录屏幕从后台堆栈中删除,但登录欢迎屏幕未从后台堆栈中删除。我在撰写导航中有什么遗漏/错误吗?

composable(Screen.LoginScreen.route) {
                LoginScreen {
                    Log.d("AppMainNavigation", "AppMainNavigation: ${navController.backQueue}")
                    navController.navigate(Screen.HomeBaseScreen.route){
                        popUpTo(Screen.LoginScreen.route){
                            inclusive = true
                        }
                        launchSingleTop = true
                    }
                }
            }

GitHub 链接: https://github.com/rramprasad/BloomApp/blob/main/app/src/main/java/dev/ramprasad/bloom/MainActivity.kt

1 个答案:

答案 0 :(得分:0)

将您的 jetpack compose 版本更新为最新发布的预览版本和所有其他依赖项。 当前喷气背包组合版本:1.0.0-rc02

还有你想弹出的屏幕只是使用这个

我的启动画面代码:

 @Composable
 fun Navigate(navController: NavController) {
    produceState(initialValue = -1) {
        delay(1500)
        navController.popBackStack()
        val route = if (Firebase.auth.currentUser == null) AppRouter.Intro.route else AppRouter.Home.route
        navController.navigate(route)
    }
 }

所以在这里你可以使用下面这行来从 backstack 中删除屏幕

navController.popBackStack()