Compose-Navigation:在导航之前从堆栈中删除以前的可组合

时间:2021-03-28 20:28:36

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

我正在使用 compose-navigation(alpha09) 来处理可组合项之间的导航

我想在移动到下一个目的地时移除 Splash 屏幕(我不希望 后退 回到 Splash)

以下尝试未按预期工作:

navHostController.navigate(Route.login.id) {
    navHostController.graph.clear()
}
navHostController.navigate(Route.login.id)
navHostController.graph.clear()
val currentDest = navHostController.currentDestination
navHostController.navigate(Route.login.id)
if (currentDest != null) {
   navHostController.graph.remove(currentDest)
}

那么如何移除启动画面,然后移至下一个?

2 个答案:

答案 0 :(得分:3)

在 Jetpack Compose 1.0.0-rc01 中导航并从返回堆栈中删除以前的可组合您可以使用:

navController.navigate(Screens.Login.name) {
    popUpTo(Screens.Splash.name) {
        inclusive = true
    }
}

以上代码将从 Splash 屏幕导航到 Login 并弹出所有内容,包括 Splash 屏幕。

Navigate to a composable - docs

答案 1 :(得分:0)

对于 v1.0.0-alpha09

使用 popUpTo = 0 您可以在导航到下一个目的地之前清除堆栈。所以:

navHostController.navigate(Route.login.id) {
    popUpTo = 0
}