preloadAll method

Future<void> preloadAll([
  1. CustomNativeAdType? type
])

Implementation

Future<void> preloadAll([CustomNativeAdType? type]) async {
  final completer = Completer<void>();

  final typesToPreload =
      type != null
          ? [type]
          : [CustomNativeAdType.medium, CustomNativeAdType.small];

  int pendingLoads = 0;

  void checkDone() {
    pendingLoads--;
    if (pendingLoads <= 0 && !completer.isCompleted) {
      completer.complete();
    }
  }

  for (final t in typesToPreload) {
    if ((adModel?.isadmobad ?? false) && (adModel?.isnativeenable ?? false)) {
      pendingLoads += _preloadCount;
    }
    if ((adModel?.isadManger ?? false) &&
        (adModel?.isnativeenable ?? false)) {
      pendingLoads += _preloadCount;
    }
  }

  if (pendingLoads == 0) {
    if (!completer.isCompleted) {
      completer.complete();
    }
  } else {
    for (final t in typesToPreload) {
      if ((adModel?.isadmobad ?? false) &&
          (adModel?.isnativeenable ?? false)) {
        _preloadAdMob(
          t,
          useNativeFactory: adModel!.iscustomeads ?? false,
          onAdLoadedCallback: checkDone,
          onAdFailedCallback: checkDone,
        );
      }
      if ((adModel?.isadManger ?? false) &&
          (adModel?.isnativeenable ?? false)) {
        _preloadAdManager(
          t,
          useNativeFactory: adModel!.iscustomeads ?? false,
          onAdLoadedCallback: checkDone,
          onAdFailedCallback: checkDone,
        );
      }
      if (adModel?.isqurekaads ?? false) {
        _preloadQureka(t);
      }
    }
  }

  return completer.future;
}