【问题标题】:Flutter: How to reopen pages, if they are already pushed on the stack?Flutter:如果页面已经被压入堆栈,如何重新打开它们?
【发布时间】:2019-07-25 05:46:48
【问题描述】:

我正在学习 Flutter,但我有一个关于导航的问题。我的应用程序有 3 个页面,每个页面都包含相同的抽屉,使用 navigator.push() 在它们之间导航。现在我可以一遍又一遍地推动“相同”页面,然后使用后退按钮 (navigator.pop) 一个又一个地重新打开它们。有没有办法只创建每个页面一次然后重新打开它,如果它已经被推送到堆栈?

【问题讨论】:

    标签: android dart flutter


    【解决方案1】:

    我终于找到了一种方法,但没有导航器。我已将所有 Scaffolds 放在 PageWiew 中,禁用滑动操作并将 AutomaticKeepAliveClientMixin 添加到每个页面。在抽屉中,我用 PageController.jumpToPage 更改了 Navigator.push 代码。现在它可以按我的意愿工作,但我仍然想知道这是否是“正确”的解决方案?

    【讨论】:

      【解决方案2】:

      不确定您是否可以创建一次然后重新打开它(保存状态和所有内容),但我认为这种方法将帮助您实现您想要的。

      popUntil

      pushAndRemoveUntil

      Navigator class 文档中有许多可能有用的静态方法。

      【讨论】:

      • 我能想到的解决 Navigator 类问题的唯一方法是拥有一个打开页面的列表。然后在抽屉中,我需要检查我要打开的页面是否已经在堆栈上,如果是,请使用 popUntil 否则将其推入堆栈。然后我需要更新页面列表。这里的问题是,我会丢失一个页面(例如第 1,2 和 3 页:列表中是 1 和 2,我想再次打开 1 -> 我 popUntil 1 并丢失了第 2 页......)。我也不确定这会有多有效。
      猜你喜欢
      • 2021-10-15
      • 2020-02-06
      • 1970-01-01
      • 2014-12-21
      • 1970-01-01
      • 2015-04-12
      • 2021-05-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多