loadAd method
void
loadAd({
- String? adUnitId,
- AdRequest? request,
- VoidCallback? onLoaded,
- dynamic onFailedToLoad(
- LoadAdError error
Preloads an App Open Ad with full error and duplicate guards.
Implementation
void loadAd({
String? adUnitId,
AdRequest? request,
VoidCallback? onLoaded,
Function(LoadAdError error)? onFailedToLoad,
}) {
if (!AdConstants.isPlatformSupported || !AdsManager.isAdsEnabled) {
return;
}
if (_isLoading || isAdAvailable) {
if (isAdAvailable) onLoaded?.call();
return;
}
_isLoading = true;
final effectiveAdUnitId = adUnitId ?? AdConstants.appOpenAdUnitId;
developer.log(
'Loading App Open Ad (Unit: $effectiveAdUnitId)...',
name: 'AppOpenAdManager',
);
AppOpenAd.load(
adUnitId: effectiveAdUnitId,
request: request ?? const AdRequest(),
adLoadCallback: AppOpenAdLoadCallback(
onAdLoaded: (ad) {
developer.log('App Open Ad loaded successfully.',
name: 'AppOpenAdManager');
_appOpenAd = ad;
_appOpenLoadTime = DateTime.now();
_isLoading = false;
AdsManager.emitAdEvent(
AdEvent(
format: AdFormat.appOpen,
type: AdEventType.loaded,
adUnitId: effectiveAdUnitId,
),
);
onLoaded?.call();
},
onAdFailedToLoad: (error) {
developer.log(
'App Open Ad failed to load: ${error.message} (code: ${error.code})',
name: 'AppOpenAdManager',
);
_isLoading = false;
_appOpenAd = null;
_appOpenLoadTime = null;
AdsManager.emitAdEvent(
AdEvent(
format: AdFormat.appOpen,
type: AdEventType.failedToLoad,
adUnitId: effectiveAdUnitId,
loadAdError: error,
),
);
onFailedToLoad?.call(error);
},
),
);
}