首页 > 解决方案 > 如何在我的 Flutter 应用程序中重置基本路由 - 即弹出任何路由并使用 Navigator 将其替换为新路由

问题描述

Flutter 新手,如果这很明显,请原谅我,但我已经阅读了文档并尝试了一堆 Navigator 选项,但它们都没有像我想要的那样工作。问题集:我们有一系列复杂的(嗯,半复杂的)屏幕等来处理登录/授权/注册过程。这可以在 Route 堆栈上下降到 3 或 4 级。这一切都很好——不用担心。

当我们获得一个成功的登录事件(从几个不同的路径)并想要转到“主页”页面时,问题就来了。一旦我们在主页上,它应该是路由树的新“根”(我确信这不是正确的术语——但我认为这个想法是可靠的)。

因此,假设我们可能下降 1/2/3 甚至 4 级,并且想要“弹出”并将整个堆栈(请使用任何转换事件)替换为新的顶级根 - 神奇的导航器集或方法将这样做干净吗?

我目前的(可怕的)方法是交给“pop()”级别并进行 Navigator.pushReplacementNamed()调用(它们在这里都是命名路由)但这不是通用解决方案(必须确切知道有多少级别)更糟糕的是,它会导致“动画”过渡到屏幕上的“pop”,对于每个 pop() 看起来......不是很好。

蒂亚!

标签: dartflutternavigator

解决方案


Navigator 暴露的不仅仅是pop. 您可以执行以下操作:

Navigator.pushNamedAndRemoveUntil(context, '/', (_) => false);

这基本上会推动一个家并删除新家后面的所有路线


推荐阅读