showNativeAds function

dynamic showNativeAds({
  1. int pos = 0,
  2. bool isMediumNativeAds = false,
  3. Color backgroundColor = const Color(0xFFFFFFFF),
  4. Color borderColor = const Color(0xFFFFFFFF),
  5. double borderwidth = 1.0,
  6. BorderStyle borderstyle = BorderStyle.solid,
  7. EdgeInsetsGeometry? widgetMargin,
  8. double borderRadius = 12,
  9. Size size = const Size(double.infinity, 350),
  10. dynamic onAdLoadedCallback(
    1. Widget
    )?,
  11. Function? onAdFailedToLoadCallback,
})

Implementation

showNativeAds(
    {int pos = 0,
    bool isMediumNativeAds = false,
    Color backgroundColor = const Color(0xFFFFFFFF),
    Color borderColor = const Color(0xFFFFFFFF),
    double borderwidth = 1.0,
    BorderStyle borderstyle = BorderStyle.solid,
    EdgeInsetsGeometry? widgetMargin,
    double borderRadius = 12,
    Size size = const Size(double.infinity, 350),
    Function(Widget)? onAdLoadedCallback,
    Function? onAdFailedToLoadCallback}) async {
  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?.isNativeAds ?? false) &&
          (_settings?.googleAds?.nativeId ?? "").isNotEmpty) {
        _nativeAd = NativeAd(
          adUnitId: _settings?.googleAds?.nativeId ?? "",
          isMediumNativeAds: isMediumNativeAds,
          request: _request,
          factoryId: 'nativeFactoryId',
          listener: NativeAdListener(
            onAdLoaded: (Ad nativeAd) {
              print('$NativeAd loaded.');
              if (onAdLoadedCallback != null && nativeAd is AdWithView) {
                onAdLoadedCallback(Container(
                  width: size.width.toDouble(),
                  height: size.height.toDouble(),
                  margin: widgetMargin,
                  alignment: Alignment.center,
                  decoration: BoxDecoration(
                      color: backgroundColor,
                      border: Border.all(
                          color: borderColor,
                          width: borderwidth,
                          style: borderstyle),
                      borderRadius:
                          BorderRadius.all(Radius.circular(borderRadius))),
                  child: AdWidget(ad: nativeAd),
                ));
              }
            },
            onAdFailedToLoad: (Ad ad, LoadAdError error) {
              print(
                  '$NativeAd == = = ==== ==== ==== ==== ==== ==== === failedToLoad: $error');
              ad.dispose();
              _nativeAd = null;
              showNativeAds(
                  pos: pos + 1,
                  size: size,
                  widgetMargin: widgetMargin,
                  backgroundColor: backgroundColor,
                  borderColor: borderColor,
                  borderwidth: borderwidth,
                  borderstyle: borderstyle,
                  borderRadius: borderRadius,
                  isMediumNativeAds: isMediumNativeAds,
                  onAdLoadedCallback: onAdLoadedCallback,
                  onAdFailedToLoadCallback: onAdFailedToLoadCallback);
            },
            onAdOpened: (Ad ad) => print('$NativeAd onAdOpened.'),
            onAdClosed: (Ad ad) => print('$NativeAd onAdClosed.'),
          ),
        )..load();
      } else {
        showNativeAds(
            pos: pos + 1,
            size: size,
            widgetMargin: widgetMargin,
            isMediumNativeAds: isMediumNativeAds,
            backgroundColor: backgroundColor,
            borderColor: borderColor,
            borderwidth: borderwidth,
            borderstyle: borderstyle,
            borderRadius: borderRadius,
            onAdLoadedCallback: onAdLoadedCallback,
            onAdFailedToLoadCallback: onAdFailedToLoadCallback);
      }
      break;
    case _ADMANAGERAD:
      if ((_settings?.googleAds?.isNativeAds ?? false) &&
          (_settings?.googleAds?.nativeId ?? "").isNotEmpty) {
        _nativeAd = NativeAd.fromAdManagerRequest(
            adUnitId: _settings?.googleAds?.nativeId ?? "",
            isMediumNativeAds: isMediumNativeAds,
            factoryId: 'nativeFactoryId',
            listener: NativeAdListener(
              onAdLoaded: (Ad nativeAd) {
                print('$NativeAd loaded.');
                if (onAdLoadedCallback != null && nativeAd is AdWithView) {
                  onAdLoadedCallback(Container(
                    width: size.width.toDouble(),
                    height: size.height.toDouble(),
                    alignment: Alignment.center,
                    margin: widgetMargin,
                    decoration: BoxDecoration(
                        color: backgroundColor,
                        border: Border.all(
                            color: borderColor,
                            width: borderwidth,
                            style: borderstyle),
                        borderRadius:
                            BorderRadius.all(Radius.circular(borderRadius))),
                    child: AdWidget(ad: nativeAd),
                  ));
                }
              },
              onAdFailedToLoad: (Ad ad, LoadAdError error) {
                print('$NativeAd failedToLoad: $error');
                ad.dispose();
                _nativeAd = null;
                showNativeAds(
                    pos: pos + 1,
                    size: size,
                    widgetMargin: widgetMargin,
                    backgroundColor: backgroundColor,
                    borderColor: borderColor,
                    borderwidth: borderwidth,
                    borderstyle: borderstyle,
                    borderRadius: borderRadius,
                    isMediumNativeAds: isMediumNativeAds,
                    onAdLoadedCallback: onAdLoadedCallback,
                    onAdFailedToLoadCallback: onAdFailedToLoadCallback);
              },
              onAdOpened: (Ad ad) => print('$NativeAd onAdOpened.'),
              onAdClosed: (Ad ad) => print('$NativeAd onAdClosed.'),
            ),
            adManagerRequest: _ad_manager_request)
          ..load();
      } else {
        showNativeAds(
            pos: pos + 1,
            size: size,
            widgetMargin: widgetMargin,
            backgroundColor: backgroundColor,
            borderColor: borderColor,
            borderwidth: borderwidth,
            borderstyle: borderstyle,
            borderRadius: borderRadius,
            isMediumNativeAds: isMediumNativeAds,
            onAdLoadedCallback: onAdLoadedCallback,
            onAdFailedToLoadCallback: onAdFailedToLoadCallback);
      }
      break;
    case _APPLOVINAD:
      if ((_settings?.appLovin?.isNativeAds ?? false) &&
          (_settings?.appLovin?.nativeAds?.manual ?? "").isNotEmpty) {
        _appLovinnativeAd = AppLovinNativeAd(
            isMediumNativeAds: isMediumNativeAds,
            adUnitId: _settings?.appLovin?.nativeAds?.manual ?? "",
            factoryId: 'nativeFactoryId',
            listener: NativeAdListener(
              onAdLoaded: (Ad nativeAd) {
                print('$NativeAd loaded.');
                if (onAdLoadedCallback != null && nativeAd is AdWithView) {
                  onAdLoadedCallback(Container(
                    width: size.width.toDouble(),
                    height: size.height.toDouble(),
                    alignment: Alignment.center,
                    margin: widgetMargin,
                    decoration: BoxDecoration(
                        color: backgroundColor,
                        border: Border.all(
                            color: borderColor,
                            width: borderwidth,
                            style: borderstyle),
                        borderRadius:
                            BorderRadius.all(Radius.circular(borderRadius))),
                    child: AdWidget(ad: nativeAd),
                  ));
                }
              },
              onAdFailedToLoad: (Ad ad, LoadAdError error) {
                print('$NativeAd failedToLoad: $error');
                ad.dispose();
                _appLovinnativeAd = null;
                showNativeAds(
                    pos: pos + 1,
                    size: size,
                    widgetMargin: widgetMargin,
                    backgroundColor: backgroundColor,
                    borderColor: borderColor,
                    borderwidth: borderwidth,
                    borderstyle: borderstyle,
                    borderRadius: borderRadius,
                    isMediumNativeAds: isMediumNativeAds,
                    onAdLoadedCallback: onAdLoadedCallback,
                    onAdFailedToLoadCallback: onAdFailedToLoadCallback);
              },
              onAdOpened: (Ad ad) => print('$NativeAd onAdOpened.'),
              onAdClosed: (Ad ad) => print('$NativeAd onAdClosed.'),
            ))
          ..load();
      } else {
        showNativeAds(
            pos: pos + 1,
            size: size,
            widgetMargin: widgetMargin,
            isMediumNativeAds: isMediumNativeAds,
            backgroundColor: backgroundColor,
            borderColor: borderColor,
            borderwidth: borderwidth,
            borderstyle: borderstyle,
            borderRadius: borderRadius,
            onAdLoadedCallback: onAdLoadedCallback,
            onAdFailedToLoadCallback: onAdFailedToLoadCallback);
      }
      break;
    case _FACEBOOKAD:
      if ((_settings?.facebookAds?.isNativeAds ?? false) &&
          (_settings?.facebookAds?.nativeId ?? "").isNotEmpty) {
        _facebooknativeAd = FacebookNativeAd(
            isMediumNativeAds: isMediumNativeAds,
            adUnitId: _settings?.facebookAds?.nativeId ?? "",
            factoryId: 'nativeFactoryId',
            listener: NativeAdListener(
              onAdLoaded: (Ad nativeAd) {
                print('$NativeAd loaded.');
                if (onAdLoadedCallback != null && nativeAd is AdWithView) {
                  onAdLoadedCallback(Container(
                    width: size.width.toDouble(),
                    height: size.height.toDouble(),
                    alignment: Alignment.center,
                    margin: widgetMargin,
                    decoration: BoxDecoration(
                        color: backgroundColor,
                        border: Border.all(
                            color: borderColor,
                            width: borderwidth,
                            style: borderstyle),
                        borderRadius:
                            BorderRadius.all(Radius.circular(borderRadius))),
                    child: AdWidget(ad: nativeAd),
                  ));
                }
              },
              onAdFailedToLoad: (Ad ad, LoadAdError error) {
                print('$NativeAd failedToLoad: $error');
                ad.dispose();
                _appLovinnativeAd = null;
                showNativeAds(
                    pos: pos + 1,
                    size: size,
                    widgetMargin: widgetMargin,
                    backgroundColor: backgroundColor,
                    borderColor: borderColor,
                    borderwidth: borderwidth,
                    borderstyle: borderstyle,
                    borderRadius: borderRadius,
                    isMediumNativeAds: isMediumNativeAds,
                    onAdLoadedCallback: onAdLoadedCallback,
                    onAdFailedToLoadCallback: onAdFailedToLoadCallback);
              },
              onAdOpened: (Ad ad) => print('$NativeAd onAdOpened.'),
              onAdClosed: (Ad ad) => print('$NativeAd onAdClosed.'),
            ))
          ..load();
      } else {
        showNativeAds(
            pos: pos + 1,
            size: size,
            widgetMargin: widgetMargin,
            isMediumNativeAds: isMediumNativeAds,
            backgroundColor: backgroundColor,
            borderColor: borderColor,
            borderwidth: borderwidth,
            borderstyle: borderstyle,
            borderRadius: borderRadius,
            onAdLoadedCallback: onAdLoadedCallback,
            onAdFailedToLoadCallback: onAdFailedToLoadCallback);
      }
      break;
    default:
      showNativeAds(
          pos: pos + 1,
          size: size,
          widgetMargin: widgetMargin,
          isMediumNativeAds: isMediumNativeAds,
          backgroundColor: backgroundColor,
          borderColor: borderColor,
          borderwidth: borderwidth,
          borderstyle: borderstyle,
          borderRadius: borderRadius,
          onAdLoadedCallback: onAdLoadedCallback,
          onAdFailedToLoadCallback: onAdFailedToLoadCallback);
      break;
  }
}