应用程序从后台恢复后,BannerAd 显示空白的黑色页面。 据我所知,google_mobile_ads正在flutter中使用webview_flutter包。正如所料,从后台恢复时,webview 也会出现同样的问题。 admob/webview 中的所有功能(如单击或滚动)都可以正常工作,只是呈现黑色空白。即使我建立一个只有广告的新项目,问题仍然存在。
下面的代码仅包含一个简单的 BannerAd,该广告在应用程序从后台恢复后显示一个空白页面。 (在 flutter 3.16.3 / Pixel 7 Pro 中)
import 'package:flutter/material.dart';
import 'package:google_mobile_ads/google_mobile_ads.dart';
void main(){
runApp(MaterialApp(home:AD()));
}
class AD extends StatefulWidget{
@override
State createState()=>_AD();
}
class _AD extends State<AD>{
BannerAd?_ADBANNER;
final ValueNotifier<bool>_READY=ValueNotifier<bool>(false);
@override
void initState(){
super.initState();
MobileAds.instance.initialize();
if(null==_ADBANNER)
_ADBANNER=
BannerAd(
adUnitId:'ca-app-pub-3940256099942544/6300978111',
size:AdSize.banner,
request:AdRequest(),
listener:BannerAdListener(
onAdLoaded:(AD){
debugPrint('Ad loaded');
if(!_READY.value)
_READY.value=true;
},
onAdFailedToLoad:(AD,E){
debugPrint('Ad failed to load: $E');
_READY.value=false;
AD.dispose();
},
),
)
..load();
}
@override
void dispose(){
_READY.value=false;
_ADBANNER?.dispose();
debugPrint('Ad disposed');
super.dispose();
}
@override
Widget build(CTX){
return
ValueListenableBuilder<bool>(
valueListenable:_READY,
builder:(CTX,V,_){
debugPrint('LISTEN');
if(V)
return
Container(
alignment:Alignment.center,
color:Colors.white,
child:
AdWidget(ad:_ADBANNER!),
);
else
return
Center(child:CircularProgressIndicator());
}
);
}
}
这段代码中我缺少什么??
PS:这只发生在我的 Pixel 7 Pro 和 mi A1 手机中,模拟器中没有,并且调试控制台中根本没有错误。我尝试同时使用bannerAds和webview,当slivergrid进入视口时,bannerAds显示疯狂的显示错误,复制webview屏幕。
我也有同样的问题。您使用的是哪个版本的 google_mobile_ads?您是否尝试过在应用程序恢复后重新加载横幅?