Flutter Dart如何每点击指定次数按钮后展示Interstitial插屏广告
实现方案
步骤1:新增状态变量
首先在你的State类中新增两个变量,分别用来统计点击次数、存储插屏广告实例:
// 已有的广告实例 InterstitialAd? _interstitialAd; // 点击计数器 int _clickCount = 0;
步骤2:初始化时预加载广告
在initState生命周期中调用广告加载方法,保证首次达到触发条件时广告已就绪:
@override void initState() { super.initState(); _createInterstitialAd(); }
步骤3:修改按钮点击逻辑
给你的名言展示按钮绑定如下点击事件,每次点击累加计数器,达到10次的倍数时触发广告展示:
void _onQuoteButtonClick() { // 原有逻辑:随机展示名言 _showRandomQuote(); // 广告触发逻辑 _clickCount++; // 每10次点击且广告已加载完成时展示广告 if (_clickCount % 10 == 0 && _interstitialAd != null) { showInterstitial(); } }
步骤4:调整广告回调逻辑,实现循环加载
修改原有广告相关方法,保证每次广告展示结束/加载失败后都重新加载下一次广告,避免后续触发时无广告可用:
void _createInterstitialAd() { InterstitialAd.load( adUnitId: 'ca-app-pub-3940256099942544/1033173712', request: const AdRequest(), adLoadCallback: InterstitialAdLoadCallback( onAdFailedToLoad: (LoadAdError error) { print('广告加载失败: $error'); // 加载失败时重置广告实例,避免空调用 _interstitialAd = null; }, onAdLoaded: (InterstitialAd ad) { setState(() { _interstitialAd = ad; }); }, ), ); } void showInterstitial() { _interstitialAd?.fullScreenContentCallback = FullScreenContentCallback( onAdShowedFullScreenContent: (InterstitialAd ad) => print('广告已展示'), onAdDismissedFullScreenContent: (InterstitialAd ad) { ad.dispose(); // 广告关闭后重置实例,重新加载下一次广告 _interstitialAd = null; _createInterstitialAd(); }, onAdFailedToShowFullScreenContent: (InterstitialAd ad, AdError error) { Navigator.of(context).pop(); ad.dispose(); // 展示失败也重新加载广告 _interstitialAd = null; _createInterstitialAd(); }, onAdImpression: (InterstitialAd ad) => print('广告有效曝光'), ); _interstitialAd?.show(); }
注意事项
- 如果达到10次点击时广告还未加载完成,本次不会触发广告展示,不会影响正常的名言展示功能,等到下一次10次节点时会再次尝试
- 测试阶段可以把10改为更小的数字(比如2)验证触发逻辑是否正常
- 上线前记得把测试广告ID替换为你的正式广告ID
内容的提问来源于stack exchange,提问作者Hossain Abeer
相关产品推荐
相关产品推荐

