【问题标题】:dispose method not getting calleddispose 方法没有被调用
【发布时间】:2020-09-19 08:51:23
【问题描述】:

在我的主页中,我有两个标签,分别命名为标签1和标签2。当切换到标签2时,右上角有一个图标。点击图标时,它将打开页面C。

我注意到当我从标签 1 切换到标签 2 时,它会在标签 1 中调用 dispose。 当我从 tab 2 切换到 tab 1 时,会调用 tab2 dispose

但是,当我单击选项卡 2 中的图标导航到页面 c 时,选项卡 2 中的 dispose 不会被调用。 当我单击图标导航到页面 C 时,如何调用 dispose 方法?

【问题讨论】:

  • 您如何导航到页面 C?你调用的是什么方法?
  • @ChristopherMoore 在主页面,我使用Navigator.pushNamed打开pageC

标签: flutter dart widget dispose


【解决方案1】:

您正在使用Navigator.pushNamed 方法将页面C 推到顶部。这会创建一堆页面,因此标签页不会被丢弃,它们仍然存在,只是不可见。改用Navigator.pushReplacementNamed 替换当前页面并将旧页面从堆栈中取出并dispose 它。

【讨论】:

  • 我使用Navigator.pushReplacementNamed,它可以工作。但是当我按下后退按钮时,它会退出我的应用程序而不是返回上一页。
  • @JohnJoe 您还必须将后退按钮更改为使用pushReplacement。这里还有一些关于 SO 的其他问题可以帮助解决这个问题。
猜你喜欢
  • 1970-01-01
  • 2020-12-24
  • 2012-03-13
  • 2014-06-02
  • 2011-08-28
  • 2017-02-24
  • 2015-02-23
  • 2013-12-19
相关资源
最近更新 更多