我们创建了以下类以在波动时显示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类中正确定义了以下值。
adAppId
,adUnitId
,testDevices
,keywords
init()
在启动后立即被调用。
展示广告时将调用showBanner()
。
隐藏广告时将调用hideBanner()
。
这些在大多数情况下都可以正常工作。
但是在调用_bannerAd.show()
之后,如果在收听者收到hideBanner()
之前调用MobileAdEvent.loaded
,广告将不会隐藏。
[确定]
_bannerAd.show()
->接收MobileAdEvent.loaded
-> hideBanner()
[NG]
_bannerAd.show()
-> hideBanner()
->(接收MobileAdEvent.loaded
)
如果这样做,如何避免这种情况?