Compose
ikn*_*now 28
在 Jetpack Compose1.0.0-rc01中导航并从后台堆栈中删除以前的 Composable 您可以使用:
navController.navigate(Screens.Login.name) { popUpTo(Screens.Splash.name) { inclusive = true }}上面的代码将从Splash屏幕导航到Login并弹出所有内容,包括Splash屏幕。
导航到可组合 - 文档
凉爽的。感谢。我会接受你的,因为我以前的自我回答现在已经过时了。 (2认同)Mah*_*alv 13
对于v1.0.0-alpha09(和 1.0 稳定版)
使用popUpTo(0)您可以在导航到下一个目的地之前清除堆栈。所以:
navHostController.navigate(Route.login.id) { // popUpTo = 0 // DEPRECATED popUpTo(0)} popUpto 已弃用 (2认同) @Rulogarcillan 但不是`popUpTo(0)` (2认同)bbo*_*eck 7
对于不需要知道当前路由的一致可重用函数,请使用此 NavOptionsBuilder 扩展函数
fun NavOptionsBuilder.popUpToTop(navController: NavController) { popUpTo(navController.currentBackStackEntry?.destination?.route ?: return) { inclusive = true }}^ 与其他答案类似,它 popUpTo 当前路由,但不需要命名特定的当前路由,而是从 backstack 条目中获取它。
现在你可以像这样使用它:
navController.navigate(ScreenRoutes.Login.route) { popUpToTop(navController) }^ 该示例导航到 Login,并且应该清除它之前的整个 backstack。
Compose