dart - 如何在我的 Flutter 应用程序中重置基本路由 - 即弹出任何路由并使用 Navi

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

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

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

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

TIA!

最佳答案

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

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

这基本上会推送一个 home 并删除 所有新路由后面的路由

关于dart - 如何在我的 Flutter 应用程序中重置基本路由 - 即弹出任何路由并使用 Navigator 将其替换为新路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52048101/

相关文章:

flutter - 在 float 操作按钮上的 onPressed 回调中从脚手架显示 snack

dart - Flutter Firestore 服务器端时间戳

flutter - 如何在不同的屏幕尺寸上测试 Flutter 小部件?

firebase - Flutter 中从 Firestore 查询单个文档(cloud_fires

android - 在 flutter 中打开对话框时检测返回按钮按下

dart - flutter 导航器不工作

android-studio - 无法将 Flutter 项目迁移到 AndroidX

dart - 错误 : The name 'Image' is defined in the lib

dart - Flutter BottomNavigationBar 不能处理三个以上的项目

ios - 使用 Swift 创建 Flutter 项目