在颤动中显示广告后无法立即隐藏广告

时间:2018-09-05 04:34:32

标签: dart admob flutter

我们创建了以下类以在波动时显示AdMob。

import 'package:firebase_admob/firebase_admob.dart';
import 'package:xxxxx/models/const.dart';

class Ads {
  static BannerAd _bannerAd;

  static init() {
    FirebaseAdMob.instance.initialize(appId: Const.adAppId);
  }

  static BannerAd createBannerAd() {
    return new BannerAd(
      adUnitId: Const.adUnitId,
      size: AdSize.banner,
      targetingInfo: targetingInfo,
      listener: (MobileAdEvent event) {
        print("BannerAd event $event");
      },
    );
  }

  static void showBanner() {
    if (_bannerAd == null) {
      _bannerAd = createBannerAd();
    }

    _bannerAd.load().then((load) {
      _bannerAd.show(anchorType: AnchorType.bottom);
    });
  }

  static void hideBanner() {
    _bannerAd?.dispose();
    _bannerAd = null;
  }

  static final MobileAdTargetingInfo targetingInfo = new MobileAdTargetingInfo(
    testDevices: Const.testDevices,
    keywords: Const.keywords,
    birthday: new DateTime.now(),
    gender: MobileAdGender.female,
  );
}

在Const类中正确定义了以下值。

adAppIdadUnitIdtestDeviceskeywords

init()在启动后立即被调用。 展示广告时将调用showBanner()。 隐藏广告时将调用hideBanner()

这些在大多数情况下都可以正常工作。

但是在调用_bannerAd.show()之后,如果在收听者收到hideBanner()之前调用MobileAdEvent.loaded,广告将不会隐藏。

[确定] _bannerAd.show()->接收MobileAdEvent.loaded-> hideBanner()

[NG] _bannerAd.show()-> hideBanner()->(接收MobileAdEvent.loaded

如果这样做,如何避免这种情况?

0 个答案:

没有答案