show method

Future<RewardItem> show({
  1. bool? immersiveMode,
  2. FullScreenContentCallback<RewardedAd>? fullScreenContentCallback,
  3. OnUserEarnedRewardCallback? onUserEarnedReward,
})

Implementation

Future<RewardItem> show({
  bool? immersiveMode,
  FullScreenContentCallback<RewardedAd>? fullScreenContentCallback,
  OnUserEarnedRewardCallback? onUserEarnedReward,
}) async {
  ad.fullScreenContentCallback = FullScreenContentCallback(
    onAdShowedFullScreenContent: (ad) {
      fullScreenContentCallback?.onAdShowedFullScreenContent?.call(ad);
    },
    onAdImpression: (ad) {
      fullScreenContentCallback?.onAdImpression?.call(ad);
    },
    onAdFailedToShowFullScreenContent: (ad, error) {
      fullScreenContentCallback?.onAdFailedToShowFullScreenContent
          ?.call(ad, error);
    },
    onAdWillDismissFullScreenContent: (ad) {
      fullScreenContentCallback?.onAdWillDismissFullScreenContent?.call(ad);
    },
    onAdDismissedFullScreenContent: (ad) {
      fullScreenContentCallback?.onAdDismissedFullScreenContent?.call(ad);
    },
    onAdClicked: (ad) {
      fullScreenContentCallback?.onAdClicked?.call(ad);
    },
  );

  if (immersiveMode != null) {
    ad.setImmersiveMode(immersiveMode);
  }

  try {
    RewardItem? item;
    await ad.show(onUserEarnedReward: (ad, reward) {
      item = reward;
    });

    while (item == null) {
      await Future.delayed(const Duration(milliseconds: 100));
    }
    return item!;
  } catch (e) {
    rethrow;
  } finally {
    dispose();
  }
}