我在 Flutter 中的 Admob 横幅出现错误。
这是我的错误。
I/flutter (25842):AdWidget 需要在 AdWidget 插入树之前调用 Ad.load
这是我关于 Admob 横幅的代码
class GoogleAdMob {
static BannerAd loadBannerAd() {
BannerAd banner = BannerAd(
adUnitId: globals.admobAdUnitIdBanner!,
size: AdSize.banner,
request: const AdRequest(),
listener: BannerAdListener(
onAdLoaded: (
Ad ad,
) =>
onAdFailedToLoad: (
Ad ad,
LoadAdError error,
) {
ad.dispose();
onAdOpened: (
Ad ad,
) =>
onAdClosed: (
Ad ad,
) =>
onAdImpression: (
Ad ad,
) =>
),
);
return banner;
}
static Container showBannerAd(
BannerAd banner,
) {
final Container adContainer = Container(
alignment: Alignment.center,
width: banner.size.width.toDouble(),
height: banner.size.height.toDouble(),
child: AdWidget(
ad: banner,
),
);
return adContainer;
}
}
这个错误是怎么回事?
您面临的问题只是抱怨,因为
AdWidget
必须在 BannerAd
加载后创建;尽管目前您只是创建并返回 BannerAd
而不加载它。
你需要做的是调用 load
方法才能成功加载它,然后返回它。
所以现在让您的
loadBannerAd
函数异步并在返回 banner.load()
之前等待 banner
。像这样:
static Future<BannerAd> loadBannerAd() async {
final BannerAd banner = BannerAd(
.
.
rest of your code ...
.
.
await banner.load(); // here you need to wait for the banner to load successfully
return banner;
}