showBannerAds function
dynamic
showBannerAds({
- int pos = 0,
- int retry = 0,
- AdSize size = AdSize.banner,
- EdgeInsetsGeometry? margin,
- Decoration? decoration,
- dynamic onAdLoadedCallback()?,
- Function? onAdFailedToLoadCallback,
Implementation
showBannerAds(
{int pos = 0,
int retry = 0,
AdSize size = AdSize.banner,
EdgeInsetsGeometry? margin,
Decoration? decoration,
Function(Widget)? onAdLoadedCallback,
Function? onAdFailedToLoadCallback}) async {
if (_settings == null ||
(_settings?.adSetting?.appVersionCode == appVersionCode) ||
(_settings?.bannerAdsSequence?.isEmpty ?? true) ||
(_settings?.isAllAds != true)) {
if (onAdFailedToLoadCallback != null) {
onAdFailedToLoadCallback();
}
return;
}
if ((_settings?.bannerAdsSequence?.length ?? 0) <= pos) {
if ((_settings?.adSetting?.adsRetry ?? 0) > 0 &&
(_settings?.adSetting?.adsRetry ?? 0) > retry) {
pos = 0;
retry++;
} else {
resetTimerDelayed();
if (onAdFailedToLoadCallback != null) {
onAdFailedToLoadCallback();
}
return;
}
}
incrementBannerSequence().then((value) {
currentBannerSequence(pos).then((curSeqBanner) {
pos = curSeqBanner % (_settings?.bannerAdsSequence?.length ?? 0);
var ads_json = _getCurSeqData(_settings?.bannerAdsSequence, pos);
var seqName =
ads_json.containsKey("seq_name") ? ads_json["seq_name"] : "";
switch (seqName) {
case _GOOGLEAD:
GoogleAds ads = GoogleAds.fromJson(ads_json["json"]);
if ((ads.isBannerAds ?? false) && (ads.bannerId ?? "").isNotEmpty) {
BannerAd(
size: size,
adUnitId: ads.bannerId ?? "",
listener: BannerAdListener(
onAdLoaded: (Ad ad) {
if (onAdLoadedCallback != null && ad is AdWithView) {
onAdLoadedCallback(Container(
width: size.width.toDouble(),
height: size.height.toDouble(),
margin: margin,
decoration: decoration,
child: AdWidget(ad: ad),
));
}
},
onAdFailedToLoad: (Ad ad, LoadAdError error) {
ad.dispose();
showBannerAds(
retry: retry,
pos: pos + 1,
size: size,
onAdLoadedCallback: onAdLoadedCallback,
onAdFailedToLoadCallback: onAdFailedToLoadCallback);
},
onAdOpened: (Ad ad) {},
onAdClosed: (Ad ad) {},
),
request: _request)
.load();
} else {
showBannerAds(
retry: retry,
pos: pos + 1,
size: size,
onAdLoadedCallback: onAdLoadedCallback,
onAdFailedToLoadCallback: onAdFailedToLoadCallback);
}
break;
case _ADMANAGERAD:
GoogleAds ads = GoogleAds.fromJson(ads_json["json"]);
if ((ads.isBannerAds ?? false) && (ads.bannerId ?? "").isNotEmpty) {
AdManagerBannerAd(
adUnitId: ads.bannerId ?? "",
sizes: <AdSize>[size],
request: _ad_manager_request,
listener: AdManagerBannerAdListener(
onAdLoaded: (Ad ad) async {
if (onAdLoadedCallback != null && ad is AdWithView) {
onAdLoadedCallback(Container(
width: size.width.toDouble(),
height: size.height.toDouble(),
margin: margin,
decoration: decoration,
child: AdWidget(ad: ad),
));
}
// After the ad is loaded, get the platform ad size and use it to
// update the height of the container. This is necessary because the
// height can change after the ad is loaded.
/* AdManagerBannerAd bannerAd = (ad as AdManagerBannerAd);
final AdSize? size = await bannerAd.getPlatformAdSize();
if (size == null) {
return;
}*/
},
onAdFailedToLoad: (Ad ad, LoadAdError error) {
ad.dispose();
// _adManagerBannerAd = null;
showBannerAds(
retry: retry,
pos: pos + 1,
size: size,
onAdLoadedCallback: onAdLoadedCallback,
onAdFailedToLoadCallback: onAdFailedToLoadCallback);
},
),
).load();
} else {
showBannerAds(
retry: retry,
pos: pos + 1,
size: size,
onAdLoadedCallback: onAdLoadedCallback,
onAdFailedToLoadCallback: onAdFailedToLoadCallback);
}
break;
case _APPLOVINAD:
AppLovin ads = AppLovin.fromJson(ads_json["json"]);
if ((ads.isBannerAds ?? false) && (ads.bannerId ?? "").isNotEmpty) {
AppLovinBannerAd(
adUnitId: size.height < 250
? (ads.bannerId ?? "")
: ((ads.mrecId ?? "").isNotEmpty
? (ads.mrecId ?? "")
: (ads.bannerId ?? "")),
size: size,
listener: BannerAdListener(
onAdLoaded: (Ad ad) async {
if (onAdLoadedCallback != null && ad is AdWithView) {
onAdLoadedCallback(Container(
width: size.width.toDouble(),
height: size.height.toDouble(),
margin: margin,
decoration: decoration,
child: AdWidget(ad: ad),
));
}
},
onAdFailedToLoad: (Ad ad, LoadAdError error) {
ad.dispose();
showBannerAds(
retry: retry,
pos: pos + 1,
size: size,
onAdLoadedCallback: onAdLoadedCallback,
onAdFailedToLoadCallback: onAdFailedToLoadCallback);
},
),
).load();
} else {
showBannerAds(
retry: retry,
pos: pos + 1,
size: size,
onAdLoadedCallback: onAdLoadedCallback,
onAdFailedToLoadCallback: onAdFailedToLoadCallback);
}
break;
case _FACEBOOKAD:
FacebookAd ads = FacebookAd.fromJson(ads_json["json"]);
if ((ads.isBannerAds ?? false) && (ads.bannerId ?? "").isNotEmpty) {
FacebookBannerAd(
adUnitId: ads.bannerId ?? "",
size: size,
listener: BannerAdListener(
onAdLoaded: (Ad ad) async {
if (onAdLoadedCallback != null && ad is AdWithView) {
onAdLoadedCallback(Container(
width: size.width.toDouble(),
height: size.height.toDouble(),
margin: margin,
decoration: decoration,
child: AdWidget(ad: ad),
));
}
},
onAdFailedToLoad: (Ad ad, LoadAdError error) {
ad.dispose();
showBannerAds(
retry: retry,
pos: pos + 1,
size: size,
onAdLoadedCallback: onAdLoadedCallback,
onAdFailedToLoadCallback: onAdFailedToLoadCallback);
},
),
).load();
} else {
showBannerAds(
retry: retry,
pos: pos + 1,
size: size,
onAdLoadedCallback: onAdLoadedCallback,
onAdFailedToLoadCallback: onAdFailedToLoadCallback);
}
break;
case _CUSTOMAD:
CustomAds ads = CustomAds.fromJson(ads_json["json"]);
if ((ads.isQurakaBanner ?? false) &&
(ads.qurakaBannerImage?.isNotEmpty ?? false)) {
final adUnitId = (ads.qurakaBannerImage?..shuffle())?.first ?? "";
CustomBannerAd(
adUnitId: adUnitId,
size: size,
listener: BannerAdListener(onAdLoaded: (Ad ad) async {
if (onAdLoadedCallback != null && ad is AdWithView) {
onAdLoadedCallback(Container(
width: size.width.toDouble(),
height: size.height.toDouble(),
margin: margin,
decoration: decoration,
child: AdWidget(ad: ad),
));
}
}, onAdFailedToLoad: (Ad ad, LoadAdError error) {
ad.dispose();
showBannerAds(
retry: retry,
pos: pos + 1,
size: size,
onAdLoadedCallback: onAdLoadedCallback,
onAdFailedToLoadCallback: onAdFailedToLoadCallback);
}, onAdClicked: (Ad ad) {
launchURL(ads.qurekaLink ?? "");
}),
).load();
} else {
showBannerAds(
retry: retry,
pos: pos + 1,
size: size,
onAdLoadedCallback: onAdLoadedCallback,
onAdFailedToLoadCallback: onAdFailedToLoadCallback);
}
break;
default:
showBannerAds(
retry: retry,
pos: pos + 1,
size: size,
onAdLoadedCallback: onAdLoadedCallback,
onAdFailedToLoadCallback: onAdFailedToLoadCallback);
break;
}
});
});
}