应该在什么时候执行 dispose() 方法?
When the dispose() method should be executed?
什么时候应该执行 dispose() 方法?
例如,有两个小部件:
- 有状态小部件 1
- 小部件 2
小部件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 时会弹出)
什么时候应该执行 dispose() 方法?
例如,有两个小部件:
- 有状态小部件 1
- 小部件 2
小部件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 时会弹出)