颤动:如果视图已被处理,如何防止横幅广告显示

are*_*ser 8 admob dart flutter

我目前正在尝试使用firebase_admob插件中的横幅广告.显示和处理它们的过程非常简单,我在initState()和dispose()中进行.

创建和显示添加的代码如下所示:

_bannerAd = createBannerAd();
_bannerAd
  ..load().then((loaded) {
    if (loaded) {
      _bannerAd..show();
    }
  });
Run Code Online (Sandbox Code Playgroud)

但是,由于我正在异步调用show(),因此在显示广告时(即通过快速单击后退按钮)视图可能已经关闭.在这种情况下,将永远不会调用dispose()方法,并且广告将"卡在"屏幕底部.

我怎么解决这个问题?我是否使用横幅广告错误,或者是否可以检测视图是否已更改?我尝试使用州的"已安装"属性,但它似乎不起作用.

Gan*_*pat 1

只需在显示添加之前检查状态类的“this.mounted”属性即可。

    _bannerAd = createBannerAd();
    _bannerAd
  ..load().then((loaded) {
    if (loaded && this.mounted) {
      _bannerAd..show();
    }
  });
Run Code Online (Sandbox Code Playgroud)