42 lines
1.1 KiB
Dart
42 lines
1.1 KiB
Dart
import 'package:google_mobile_ads/google_mobile_ads.dart';
|
|
import 'package:flutter/foundation.dart';
|
|
import 'package:onsolgo/core/constants.dart';
|
|
|
|
class AdHandler {
|
|
static InterstitialAd? _interstitialAd;
|
|
|
|
static void loadInterstitialAd() {
|
|
if (kIsWeb) return; // Skip on PWA
|
|
|
|
InterstitialAd.load(
|
|
adUnitId: kInterstitialAdUnitId,
|
|
request: const AdRequest(),
|
|
adLoadCallback: InterstitialAdLoadCallback(
|
|
onAdLoaded: (ad) => _interstitialAd = ad,
|
|
onAdFailedToLoad: (error) => _interstitialAd = null,
|
|
),
|
|
);
|
|
}
|
|
|
|
static void showInterstitialAd(Function onAdClosed) {
|
|
if (kIsWeb || _interstitialAd == null) {
|
|
onAdClosed(); // If web or ad not ready, just open the chapter
|
|
return;
|
|
}
|
|
|
|
_interstitialAd!.fullScreenContentCallback = FullScreenContentCallback(
|
|
onAdDismissedFullScreenContent: (ad) {
|
|
ad.dispose();
|
|
loadInterstitialAd(); // Load next one
|
|
onAdClosed(); // Open the chapter
|
|
},
|
|
onAdFailedToShowFullScreenContent: (ad, error) {
|
|
ad.dispose();
|
|
onAdClosed();
|
|
},
|
|
);
|
|
|
|
_interstitialAd!.show();
|
|
_interstitialAd = null;
|
|
}
|
|
} |