Flutter中的Firebase Admob:即使正在加载广告,也要对其进行处理

时间:2020-08-11 14:41:39

标签: firebase flutter dart firebase-admob

我正在使用插件:firebase_admob:^ 0.9.3 + 4 我只想在PageView的特定页面上加载广告。当用户移动到另一个页面时,我希望放置广告。但是,我遇到了一个问题,即只有在广告已经加载并显示的情况下,广告才会被处置。否则,它将加载并显示在新标签上。

如何阻止尚未加载的广告加载?

这是代码:

MobileAdTargetingInfo targetingInfo = MobileAdTargetingInfo(
  keywords: <String>['flutterio', 'beautiful apps'],
  contentUrl: 'https://flutter.io',
  birthday: DateTime.now(),
  childDirected: false,
  designedForFamilies: false,
  gender: MobileAdGender.male, 
  testDevices: <String>[], 
);

BannerAd myBanner = BannerAd(
  adUnitId: BannerAd.testAdUnitId,
  size: AdSize.smartBanner,
  targetingInfo: targetingInfo,
  listener: (MobileAdEvent event) {
    print("BannerAd event is $event");
  },
);
myBanner
  ..load()
  ..show(
    anchorOffset: 60.0,
    horizontalCenterOffset: 10.0,
    anchorType: AnchorType.bottom,
  );

在页面的dispose方法中,我调用以下函数:

@override
  void dispose() {
    disposeAds();
    super.dispose();
}

void disposeAds()async{
    _banner?.dispose();
    _banner=null;
}

我想知道的是如何防止在处理页面后加载广告?在iOS上似乎可以自动执行此操作,但在Android上则不会。

1 个答案:

答案 0 :(得分:0)

您可以使用admob_flutter

此软件包可在小部件中转换您的Admob横幅

AdmobBanner(
      adUnitId: AdManager.bannerAdUnitId,
      adSize: AdmobBannerSize.BANNER,
    ));

然后,您可以像使用任何其他小部件一样使用

 Container getBanner() {
    return new Container(
        decoration: BoxDecoration(border: Border.all(color: Colors.black)),
        child: AdmobBanner(
          adUnitId: AdManager.bannerAdUnitId,
          adSize: AdmobBannerSize.BANNER,
        ));
  }