showRewarded method
Implementation
Future<bool> showRewarded({
Future<void> Function()? onUserEarnedReward,
VoidCallback? onDismissed,
}) async {
// Pro users always get reward free (even if ads never initialized)
if (_isProUser()) {
await onUserEarnedReward?.call();
onDismissed?.call();
return true;
}
if (!_isSafeToOperate) return false;
if (!hasRewarded || _rewardedHandler == null) return false;
if (!_rewardedHandler!.isLoaded) {
final loaded = await _ensureRewardedLoading();
if (!loaded) {
dPrint('⏭️ Rewarded ad unavailable. Trying interstitial fallback.');
await _showInterstitialFallback(onDismissed: onDismissed);
return false;
}
}
_rewardedHandler!.onDismissed = () {
onDismissed?.call();
Future.delayed(const Duration(milliseconds: 500), _ensureRewardedLoading);
};
return _rewardedHandler!.show(onUserEarnedReward: onUserEarnedReward);
}