无错误地显示 Admob 横幅

问题描述 投票:0回答:1

我在 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;
  }
}

这个错误是怎么回事?

flutter dart admob
1个回答
0
投票

您面临的问题只是抱怨,因为

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;
}
© www.soinside.com 2019 - 2024. All rights reserved.