getNextAd method

Widget? getNextAd(
  1. List priorityList
)

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
}