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

When the dispose() method should be executed?

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

例如,有两个小部件:

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

_bannerAd?.dispose();

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

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

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

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

Flutter 会处理剩下的事情。

是因为,.pop()会将路由从栈中移除,而.push()不会,从栈中移除本质上就是处理。 (当你回到 W2 时会弹出)