Flutter的新手,如果这很明显,请原谅我,但是我已经阅读了文档并尝试了许多Navigator选项,但是它们都不如我所愿。问题集:我们有一系列复杂的(好,半复杂)屏幕等,它们处理登录/授权/注册过程。在路由堆栈上,这可以降低到3或4级。很好-不用担心。
问题是,当我们获得成功的登录事件时(通过一些不同的路径),并且想要转到“主页”页面。一旦我们进入主页,它应该是Route树的新“根”(我确信这不是正确的术语-但我认为这个想法很可靠)。
因此,假设我们的位置可能降低了1/2/3甚至4级,并且希望“弹出”并将整个堆栈(请使用任何过渡事件)替换为新的顶级根目录-神奇的Navigator设置了或方法会干净利落地做到这一点?
我当前的(可怕的)方法是将“ pop()”传递给各个级别并进行Navigator.pushReplacementNamed()调用(此处均已命名路由),但这不是通用解决方案(必须确切知道如何很多级别),更糟糕的是,它会导致屏幕上的“动画”过渡到“流行音乐”,每个pop()的瞬间瞬间看起来都不太好。
TIA!
答案 0 :(得分:15)
导航器不仅仅公开MaterialPageRoute
。您可以执行以下操作:
pop
这基本上会推开家门,并删除所有新路线后面的路线
答案 1 :(得分:2)
好消息是我们现在可以使用pushReplacementNamed
Navigator.pushReplacementNamed(context, '/');
(Channel master,v1.15.4-pre.97,我不确定以前的版本可以做到这一点)
答案 2 :(得分:1)
尝试以下代码:
f.readlines(23:27)
如果您不想过渡,可以覆盖或扩展 Navigator.pushAndRemoveUntil(
context,
MaterialPageRoute(
builder: (BuildContext context) => YourInitialPage(),
),
ModalRoute.withName('/'));
类