在 Drawer 中正确的 Flutter 导航实践

Correct Flutter navigation practice in Drawer

关于从 Material 应用程序中可重复使用的抽屉在 Flutter 屏幕之间导航的快速问题。

我有一个抽屉,在 Screen1() 和 Screen2() 的列表中设置了两个导航选项,例如:

    // Go to Screen 1
    Navigator.push(context, MaterialPageRoute(
    builder: (context) => Screen1()),
    //
    // Go to Screen 2
    Navigator.push(context, MaterialPageRoute(
    builder: (context) => Screen2()),

如果用户通过抽屉反复在 Screen1 和 Screen2 之间导航,是否会产生无效率且无穷无尽的屏幕堆栈?我的意图是更改每个屏幕上的抽屉 - 使用 Navigator.pop() 以便用户可以返回到另一个屏幕,但据我了解,Navigator.pop() 只会破坏抽屉本身 - 不是屏幕!

我觉得这有点奇怪。你会建议我在抽屉里做什么来保持效率?我可以编写 navigator pop 代码以跳出抽屉以弹出实际屏幕吗?

谢谢。

您可以使用 pushAndRemoveUntil:

Push the given route onto the navigator, and then remove all the previous routes until the predicate returns true.

如果您想删除之前的所有路由,第二个参数 predicate 应该是这样的:(_) => false。还有一个 named 变体。

您可以使用 pushReplacement 而不是 pushAndRemoveUnitl。用一个新的屏幕替换以前的屏幕,防止无休止的堆叠。 有用的话点个赞:)