最近,我把我的Ffltter应用程序从AdMob_Ffltter移植到了Google_Mobile_Ads.我已经根据教程here成功地实现了横幅广告.这些广告看起来与预期不谋而合,但它们会导致应用程序的其余部分等待加载,就好像有人在等待什么.以下是问题的直观描述:
no banner (expected behaviour)个
当我想要加载包含多个小部件的页面时,延迟就更糟糕了.起初,我认为这是因为该应用程序是在模拟器上运行的,然而,这种现象在安装了更新操作系统的实体手机上也存在.我发现了this个问题,并认为这可能是相关的,然而使用建议的程序包不起作用,而且同样的问题也出现在更新的Android版本(>;10)上.这是我的广告课:
class AnchoredAdaptiveBanner extends StatefulWidget {
@override
_AnchoredAdaptiveBannerState createState() => _AnchoredAdaptiveBannerState();
}
class _AnchoredAdaptiveBannerState extends State<AnchoredAdaptiveBanner> {
BannerAd _anchoredAdaptiveAd;
bool _isLoaded = false;
@override
void didChangeDependencies() {
super.didChangeDependencies();
_loadAd();
}
Future<void> _loadAd() async {
// This was originally dynamic with an await, I changed it to static values for a sanity check, again same problem.
final AnchoredAdaptiveBannerAdSize size = AnchoredAdaptiveBannerAdSize(Orientation.portrait, width: 300, height: 50);
_anchoredAdaptiveAd = BannerAd(
adUnitId: AdManager.bannerAdUnitId,
size: size,
request: AdRequest(),
listener: BannerAdListener(
onAdLoaded: (Ad ad) {
setState(() {
_anchoredAdaptiveAd = ad as BannerAd;
_isLoaded = true;
});
},
onAdFailedToLoad: (Ad ad, LoadAdError error) {
ad.dispose();
},
),
);
return _anchoredAdaptiveAd.load();
}
@override
Widget build(BuildContext context) {
if (_anchoredAdaptiveAd != null && _isLoaded)
return Container(
width: _anchoredAdaptiveAd.size.width.toDouble(),
height: _anchoredAdaptiveAd.size.height.toDouble(),
child: AdWidget(ad: _anchoredAdaptiveAd),
);
else
return Container();
}
@override
void dispose() {
super.dispose();
_anchoredAdaptiveAd?.dispose();
}
}
例如,我在我的家庭小部件中的用法:
class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
return Container(
child: SafeArea(
child: Scaffold(
body: Builder(...),
floatingActionButton: Container(...),
bottomNavigationBar: AnchoredAdaptiveBanner()
),
),
);
}
}
正如你所看到的,没有什么是最高层在等待的.我目前使用的是Google_MOBILE_ADS 2.0.1版. 你知道这是什么原因吗?如有任何帮助,我们不胜感激!