Flutter中的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上则不会。

解决方法

您可以使用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,));
  }