loadNativeAd method

void loadNativeAd({
  1. required TemplateType templateType,
  2. required double minWidth,
  3. required double minHeight,
  4. required double maxWidth,
  5. required double maxHeight,
  6. String? adID,
  7. void onAdClicked(
    1. Ad
    )?,
  8. void onAdImpression(
    1. Ad
    )?,
  9. void onAdClosed(
    1. Ad
    )?,
  10. void onAdOpened(
    1. Ad
    )?,
  11. void onAdWillDismissScreen(
    1. Ad
    )?,
  12. void onPaidEvent(
    1. Ad,
    2. double,
    3. PrecisionType,
    4. String,
    )?,
})

Preload the ad once

Implementation

void loadNativeAd({
  required TemplateType templateType,
  required double minWidth,
  required double minHeight,
  required double maxWidth,
  required double maxHeight,
  String? adID,
  void Function(Ad)? onAdClicked,
  void Function(Ad)? onAdImpression,
  void Function(Ad)? onAdClosed,
  void Function(Ad)? onAdOpened,
  void Function(Ad)? onAdWillDismissScreen,
  void Function(Ad, double, PrecisionType, String)? onPaidEvent,
}) {
  if (_preloadedAd != null) return; // Already preloaded

  final adUnit = adID ?? AdmobEasy.instance.nativeAdID;

  if (adUnit.isEmpty) {
    AdmobEasyLogger.error("Native Ad ID is empty");
    return;
  }

  final ad = NativeAd(
    adUnitId: adUnit,
    listener: NativeAdListener(
      onAdLoaded: (ad) {
        _preloadedAd = ad as NativeAd;
        AdmobEasyLogger.success("Preloaded Native Ad (ID: $adUnit)");
      },
      onAdFailedToLoad: (ad, error) {
        _preloadedAd = null;
        ad.dispose();
        AdmobEasyLogger.error("Failed to preload Native Ad: $error");
      },
      onAdClicked: onAdClicked,
      onAdImpression: onAdImpression,
      onAdClosed: onAdClosed,
      onAdOpened: onAdOpened,
      onAdWillDismissScreen: onAdWillDismissScreen,
      onPaidEvent: onPaidEvent,
    ),
    request: const AdRequest(),
    nativeTemplateStyle: NativeTemplateStyle(templateType: templateType),
  );

  ad.load();
}