showBannerAds function

dynamic showBannerAds({
  1. int pos = 0,
  2. AdSize size = AdSize.banner,
  3. dynamic onAdLoadedCallback(
    1. Widget
    )?,
  4. Function? onAdFailedToLoadCallback,
})

Implementation

showBannerAds(
    {int pos = 0,
    AdSize size = AdSize.banner,
    Function(Widget)? onAdLoadedCallback,
    Function? onAdFailedToLoadCallback}) {
  if (_settings == null ||
      (_settings?.adSetting?.appVersionCode == appVersionCode) ||
      (_settings?.adsSequence?.isEmpty ?? true) ||
      ((_settings?.adsSequence?.length ?? 0) <= pos)) {
    if (onAdFailedToLoadCallback != null) {
      onAdFailedToLoadCallback();
    }
    return;
  }

  switch (_settings?.adsSequence?[pos]) {
    case _GOOGLEAD:
      if ((_settings?.googleAds?.isBannerAds ?? false) &&
          (_settings?.googleAds?.bannerId ?? "").isNotEmpty) {
        BannerAd(
                size: size,
                adUnitId: _settings?.googleAds?.bannerId ?? "",
                listener: BannerAdListener(
                  onAdLoaded: (Ad ad) {
                    print('$ad loaded.');
                    if (onAdLoadedCallback != null && ad is AdWithView) {
                      onAdLoadedCallback(Container(
                        width: size.width.toDouble(),
                        height: size.height.toDouble(),
                        child: AdWidget(ad: ad),
                      ));
                    }
                  },
                  onAdFailedToLoad: (Ad ad, LoadAdError error) {
                    print('$BannerAd failedToLoad: $error');
                    ad.dispose();
                    showBannerAds(
                        pos: pos + 1,
                        size: size,
                        onAdLoadedCallback: onAdLoadedCallback,
                        onAdFailedToLoadCallback: onAdFailedToLoadCallback);
                  },
                  onAdOpened: (Ad ad) => print('$BannerAd onAdOpened.'),
                  onAdClosed: (Ad ad) => print('$BannerAd onAdClosed.'),
                ),
                request: _request)
            .load();
      } else {
        showBannerAds(
            pos: pos + 1,
            size: size,
            onAdLoadedCallback: onAdLoadedCallback,
            onAdFailedToLoadCallback: onAdFailedToLoadCallback);
      }
      break;
    case _ADMANAGERAD:
      if ((_settings?.googleAds?.isBannerAds ?? false) &&
          (_settings?.googleAds?.bannerId ?? "").isNotEmpty) {
        AdManagerBannerAd(
          adUnitId: _settings?.googleAds?.bannerId ?? "",
          sizes: <AdSize>[size],
          request: _ad_manager_request,
          listener: AdManagerBannerAdListener(
            onAdLoaded: (Ad ad) async {
              // print('Inline adaptive banner loaded: ${ad.responseInfo}');
              if (onAdLoadedCallback != null && ad is AdWithView) {
                onAdLoadedCallback(Container(
                  width: size.width.toDouble(),
                  height: size.height.toDouble(),
                  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) {
                print('Error: getPlatformAdSize() returned null for $bannerAd');
                return;
              }*/
            },
            onAdFailedToLoad: (Ad ad, LoadAdError error) {
              print('Inline adaptive banner failedToLoad: $error');
              ad.dispose();
              // _adManagerBannerAd = null;
              showBannerAds(
                  pos: pos + 1,
                  size: size,
                  onAdLoadedCallback: onAdLoadedCallback,
                  onAdFailedToLoadCallback: onAdFailedToLoadCallback);
            },
          ),
        ).load();
      } else {
        showBannerAds(
            pos: pos + 1,
            size: size,
            onAdLoadedCallback: onAdLoadedCallback,
            onAdFailedToLoadCallback: onAdFailedToLoadCallback);
      }
      break;
    case _APPLOVINAD:
      if ((_settings?.appLovin?.isBannerAds ?? false) &&
          (_settings?.appLovin?.bannerId ?? "").isNotEmpty) {
        AppLovinBannerAd(
          adUnitId: _settings?.appLovin?.bannerId ?? "",
          size: size,
          listener: BannerAdListener(
            onAdLoaded: (Ad ad) async {
              // print('Inline adaptive banner loaded: ${ad.responseInfo}');
              if (onAdLoadedCallback != null && ad is AdWithView) {
                onAdLoadedCallback(Container(
                  width: size.width.toDouble(),
                  height: size.height.toDouble(),
                  child: AdWidget(ad: ad),
                ));
              }
            },
            onAdFailedToLoad: (Ad ad, LoadAdError error) {
              print('Inline adaptive banner failedToLoad: $error');
              ad.dispose();
              showBannerAds(
                  pos: pos + 1,
                  size: size,
                  onAdLoadedCallback: onAdLoadedCallback,
                  onAdFailedToLoadCallback: onAdFailedToLoadCallback);
            },
          ),
        ).load();
      } else {
        showBannerAds(
            pos: pos + 1,
            size: size,
            onAdLoadedCallback: onAdLoadedCallback,
            onAdFailedToLoadCallback: onAdFailedToLoadCallback);
      }
      break;
    case _FACEBOOKAD:
      if ((_settings?.facebookAds?.isBannerAds ?? false) &&
          (_settings?.facebookAds?.bannerId ?? "").isNotEmpty) {
        FacebookBannerAd(
          adUnitId: _settings?.facebookAds?.bannerId ?? "",
          size: size,
          listener: BannerAdListener(
            onAdLoaded: (Ad ad) async {
              // print('Inline adaptive banner loaded: ${ad.responseInfo}');
              if (onAdLoadedCallback != null && ad is AdWithView) {
                onAdLoadedCallback(Container(
                  width: size.width.toDouble(),
                  height: size.height.toDouble(),
                  child: AdWidget(ad: ad),
                ));
              }
            },
            onAdFailedToLoad: (Ad ad, LoadAdError error) {
              print('Inline adaptive banner failedToLoad: $error');
              ad.dispose();
              showBannerAds(
                  pos: pos + 1,
                  size: size,
                  onAdLoadedCallback: onAdLoadedCallback,
                  onAdFailedToLoadCallback: onAdFailedToLoadCallback);
            },
          ),
        ).load();
      } else {
        showBannerAds(
            pos: pos + 1,
            size: size,
            onAdLoadedCallback: onAdLoadedCallback,
            onAdFailedToLoadCallback: onAdFailedToLoadCallback);
      }
      break;
    default:
      showBannerAds(
          pos: pos + 1,
          size: size,
          onAdLoadedCallback: onAdLoadedCallback,
          onAdFailedToLoadCallback: onAdFailedToLoadCallback);
      break;
  }
}