Flutter Navigator 移除直到

Posted

技术标签:

【中文标题】Flutter Navigator 移除直到【英文标题】:Flutter Navigator remove until 【发布时间】:2020-10-22 14:38:53 【问题描述】:

我有一个类似pageA -> pageB -> pageC -> pageD 的路由器堆栈,我想从pageD 弹出到pageA

如果使用Navigator.of(context).popUntil,所有页面的pop过渡都会运行,但我只想运行pageD过渡,因为每个页面的导航器过渡都是不同的。

我找到了Navigator.removeRouteBelowNavigator.removeRoute,但我找不到PageBPageCRoute 实例。

有没有像removeUntil 这样的方法,或者有什么方法可以解决我的问题?谢谢。

【问题讨论】:

【参考方案1】:

试试这个

Navigator.pushAndRemoveUntil(
                context,
                MaterialPageRoute(builder: (context) => pageA()),
                ModalRoute.withName("/Home"),
              );

【讨论】:

很遗憾,如果使用这种方法,pageA 将成为一个新的 Widget,旧的pageA 的状态将丢失,路由堆栈将变为pageA -> pageA

以上是关于Flutter Navigator 移除直到的主要内容,如果未能解决你的问题,请参考以下文章

flutter生命周期

是否可以使用 navigator.pop 刷新或重新加载页面...比如第 1(nav.push=>2)页面到第 2 页,然后从第 2(nav.pop,值)返回到第 1 页?

flutter系列之:在flutter中使用导航Navigator

调用 Navigator.popUntil() 时出现黑屏

在 Flutter 的嵌套 Navigator 结构中,如何获取特定的 Navigator?

Navigator.push 没有动画 - Flutter