在jetpack组合导航中跳过堆栈项目



我有一个问题与jetpack撰写导航返回堆栈处理:

假设我在jetpack compose中有四个屏幕

ScreenA
ScreenB
ScreenC
ScreenD

我可以从

ScreenA -> ScreenB
ScreenB -> ScreenC
ScreenC -> ScreenD
//Here is the tricky part
ScreenD -> ScreenB

我想确保,当我从屏幕结束导航到屏幕b只有屏幕在后面的堆栈。我不想做

navController.popBackStack()
navController.popBackStack()

我已经尝试了几种

的组合
navController.navigate([ScreenA.route/ScreenB.route]) {
popUpTo([ScreenA.route/ScreenB.route]) {
inclusive = true
}
}

但是当按下后退键时,我回到了ScreenD,这是不期望的

我怎样才能正确地导航到这里?

你需要在导航到screenend之前从backstack中删除ScreenC,因为当你调用navigate()函数时,它默认会将当前目的地添加到backstack中。

试着在你的屏幕c:

navController.navigate(ScreenD.route) {
popUpTo(ScreenC.route) { inclusive = true }
}

Google docs导航到可组合的

相关内容

  • 没有找到相关文章

最新更新