【发布时间】:2020-04-02 09:29:56
【问题描述】:
在我的 Flutter 应用程序中,我有 2 个页面:Page1 和 Page2。在 Page1 我有一个按钮,通过这行代码将用户带到 Page2:
Navigator.pushNamed(
context,
'/page2',
arguments: someParam,
),
Page2 使用 Scaffold 和 AppBar,用户可以通过它们导航回 Page1。
在 Page2 我得到传递的参数:
ModalRoute.of(context).settings.arguments
此外,Page2 还执行一些只有当用户真的在 Page2 上时才有意义的任务。
我的观察是,当我在 Page2 上并点击返回箭头时,它确实触发了 Page1 和 Page2 的 build() 方法。
为什么这是一个问题(对我来说)?该应用程序还收到了推送通知,当用户打开这些通知时,他/她会被定向到 Page1。但是,如果用户在 Page2 上,将应用程序置于后台,然后打开通知,通过上述效果,它也会触发该后台任务 - 这对用户体验有很大的负面影响。
在离开 Page2 表单时如何防止它被 build()?或者,如果这是不可能的或一个坏主意,我如何在 Page2 的 build() 方法中检测当前调用是否来自导航?
感谢和问候!
【问题讨论】:
-
阻止重建不是解决方案。见stackoverflow.com/questions/52249578/…
-
感谢您的提示!不幸的是,我还没有(还)找到一种方法将触发器移出构建函数。但我想出了一个解决我的问题的方法(见我的回答)。
标签: flutter flutter-navigation