【问题标题】:When the dispose() method should be executed?什么时候应该执行 dispose() 方法?
【发布时间】:2020-11-17 10:45:02
【问题描述】:

什么时候应该执行 dispose() 方法?

例如,有两个小部件:

  • 有状态的小部件 1
  • 小部件 2

widget 1有dispose()方法,因为这个widget初始化admob add,所以我们应该在那里实现dispose with

_bannerAd?.dispose();

现在,让我们想象一种情况。我从 W1 到 W2,然后回到 W1。 不应该执行 dispose() 吗?我已经对这样的导航进行了建模,并且没有执行 dispose()。

然后我按下模拟器上的back按钮(返回W2),现在dispose被执行了(!),为什么在这种情况下它被执行而不是在我们制作navigator push小部件2时?

【问题讨论】:

    标签: flutter firebase-admob


    【解决方案1】:

    这是因为,.pop() 将从堆栈中删除路由,而 .push() 不会,从堆栈中删除本质上意味着处置。 (当你回来 W2 时会弹出)

    【讨论】:

      【解决方案2】:

      您可以将_bannerAd?.dispose(); 部分放在statefullWidget 的dispose 回调中:

      /* inside the statefullWidget class */
      @override
      dispose(){
        super.dispose();
        _bannerAd?.dispose();
      }
      

      Flutter 会处理剩下的事情。

      【讨论】:

      • 其实早就有了,不是我问的问题
      猜你喜欢
      • 2019-06-16
      • 2012-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-27
      • 2011-10-14
      • 2011-03-12
      • 2010-09-17
      相关资源
      最近更新 更多