【问题标题】:Correct Flutter navigation practice in DrawerDrawer 中正确的 Flutter 导航实践
【发布时间】:2022-01-25 02:30:02
【问题描述】:

关于从 Material App 中可重复使用的抽屉中在 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 代码以跳出抽屉以弹出实际屏幕吗?

谢谢。

【问题讨论】:

  • 请分享您的代码。

标签: flutter navigator drawer


【解决方案1】:

您可以使用 pushReplacement 代替 pushAndRemoveUnitl。用一个新的屏幕替换前一个屏幕,防止无限堆栈。 如果有用,请点赞:)

【讨论】:

  • 谢谢 Yash。这很有效。
【解决方案2】:

你可以使用pushAndRemoveUntil:

将给定的路由推送到导航器上,然后删除所有 之前的路由,直到谓词返回 true。

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

【讨论】:

    猜你喜欢
    • 2018-11-07
    • 2020-01-09
    • 2021-01-01
    • 1970-01-01
    • 2021-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-25
    相关资源
    最近更新 更多