繁体   English   中英

导航到可组合而不将其添加到后台堆栈

[英]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
    }
}

因此,作为这个单一的原子操作的一部分,您正在做两件事:

  1. 将每个目的地弹出(即popUpTo部分)并包括(即inclusive部分) SecondScreen 这就是从后台堆栈中删除SecondScreen的原因。

  2. 导航到ThirdScreen ,这发生在popUpTo完成后,因此将ThirdScreen放在后堆栈的顶部。

因此,您的最终回栈是:

FirstScreen -> ThirdScreen

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM