[英]Navigate to composable without adding it to backstack
我正在使用Compose Destinations库,但我不明白应该怎么做才能避免将目标添加到后台堆栈。
说明:用户导航 Screen1 -> Screen2 -> Screen3,然后他导航回来(通过按下按钮或后退手势)并进入 Screen1,因为 Screen2 不在后退堆栈中。 屏幕 1 <-... <- 屏幕 3
我在文档中搜索了类似的内容:
navigator.navigate(SecondScreenDestination) {
addToBackStack = false
}
但是没有这样的
我尝试使用 popUp 函数来实现我的目标,但我没有找到解决方案。 我真的需要帮助。
当您调用navigate()
时,您将该新目的地添加到后台堆栈。 这意味着当您navigate
到您的SecondScreen
时,您的后台堆栈变为:
FirstScreen -> SecondScreen
如果您想导航到ThirdScreen
并从后台堆栈中删除SecondScreen
,这正是popUpTo
根据Navigation Compose 文档所做的:
navigator.navigate(ThirdScreenDestination) {
popUpTo(SecondScreenDestination.route) {
inclusive = true
}
}
因此,作为这个单一的原子操作的一部分,您正在做两件事:
将每个目的地弹出(即popUpTo
部分)并包括(即inclusive
部分) SecondScreen
。 这就是从后台堆栈中删除SecondScreen
的原因。
导航到ThirdScreen
,这发生在popUpTo
完成后,因此将ThirdScreen
放在后堆栈的顶部。
因此,您的最终回栈是:
FirstScreen -> ThirdScreen
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.