getNextAd method
Implementation
Widget? getNextAd(List priorityList) {
for (var network in priorityList) {
switch (network) {
case 'admob':
if (_admobAds.isNotEmpty) {
final _bannerAd = _admobAds.removeAt(0);
if (_bannerAd != null) {
_preloadAdMob();
return AnimatedContainer(
duration: const Duration(milliseconds: 250),
width: _bannerAd!.size.width.toDouble(),
height: _bannerAd!.size.height.toDouble(),
child: AdWidget(ad: _bannerAd, key: UniqueKey()),
);
}
return SizedBox.shrink();
}
break;
case 'admanager':
if (_adManagerAds.isNotEmpty) {
final _bannerAd = _adManagerAds.removeAt(0);
if (_bannerAd != null) {
AdManagerBannerAd bannerAd = (_bannerAd as AdManagerBannerAd);
_preloadAdManager();
return FutureBuilder<AdSize?>(
future: bannerAd.getPlatformAdSize(),
builder: (context, AsyncSnapshot<AdSize?> snapshot) {
if (snapshot.connectionState == ConnectionState.done &&
snapshot.hasData &&
snapshot.data != null) {
final adSize = snapshot.data! as AdSize;
return AnimatedContainer(
duration: const Duration(milliseconds: 250),
width: (adSize.width).toDouble(),
height: (adSize.height).toDouble(),
child: AdWidget(ad: _bannerAd, key: UniqueKey()),
);
}
return SizedBox.shrink();
},
);
}
return SizedBox.shrink();
}
break;
case 'facebook':
if (_facebookAds.isNotEmpty) {
final fb = _facebookAds.removeAt(0);
_preloadFacebook(); // 🔄 refill
return fb;
}
break;
case 'qureka':
if (_qurekaAds.isNotEmpty) {
final qk = _qurekaAds.removeAt(0);
_preloadQureka(); // 🔄 refill
return qk;
}
break;
}
}
return null; // nothing available
}