dart - Flutter:如果 View 已被处理,如何防止横幅广告显示

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

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

_bannerAd = createBannerAd();
_bannerAd
  ..load().then((loaded) {
    if (loaded) {
      _bannerAd..show();
    }
  });

但是,由于我异步调用 show(),因此在显示广告时 View 可能已经关闭(即通过非常快地单击返回按钮)。在这种情况下,将永远不会调用 dispose() 方法,并且广告将“卡”在屏幕底部。

我该如何解决这个问题?我是否错误地使用了横幅广告,或者是否可以检测到 View 是否已更改?我尝试使用状态的“mounted”属性,但它似乎不起作用。

最佳答案

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

    _bannerAd = createBannerAd();
    _bannerAd
  ..load().then((loaded) {
    if (loaded && this.mounted) {
      _bannerAd..show();
    }
  });

https://stackoverflow.com/questions/49833831/

相关文章:

dart - 如何在 Flutter 中通过 Navigator 测试导航

firebase - Firestore 事务失败,出现 "Transaction failed a

dictionary - flutter/Dart : How to access a single

dart - Flutter 在 `flutter` 命令上失败

dart - 绘制带边框的圆形图像

dart - flutter 圈设计

dart - 如何在 Flutter 中移除 AppBar 前导图标周围的额外填充

android - 访问本地主机 :port from Android emulator

dart - 在 Flutter 中保持 ScrollView 偏移的同时添加 ListView 项

firebase - Flutter 和 Firestore 在请求中没有用户信息