【问题标题】:google_mobile_ads 0.13.0 plugin banner ads are auto reload when setstate call in flutter appgoogle_mobile_ads 0.13.0 插件横幅广告在颤振应用中调用 setstate 时自动重新加载
【发布时间】:2021-08-30 14:57:14
【问题描述】:

我尝试使用 setstate 函数来更新 ui,但会重新加载自动 admob 广告,并且当与音频播放器一起使用时,广告会闪烁或重建非常快速的 admob 横幅广告小部件。 任何人都知道如何在颤振中解决这个问题 导入“包:颤振/material.dart”; 导入“包:google_mobile_ads/google_mobile_ads.dart”;

class BannerAdUnit1 extends StatefulWidget {
@override
_BannerAdUnit1State createState() => _BannerAdUnit1State();
}

class _BannerAdUnit1State extends State<BannerAdUnit1> {
static BannerAd myBanner;
bool showAds = false;
@override
void initState() {
    bannerAd();
    super.initState();
    myBanner.load();
    myBanner..responseInfo;
  }

BannerAd bannerAd() {
 myBanner = new BannerAd(
    adUnitId: 'ca-app-pub-3940256099942544/6300978111',
    size: AdSize.smartBanner,
    request: AdRequest(),
    listener: BannerAdListener(
      onAdLoaded: (ad) {
      print('admob is loaded or loading');
        setState(() {
          showAds = true;
        });
      },
      onAdFailedToLoad: (ad, error) {
      print('admob is dispose or disposing');
        ad.dispose();
        setState(() {
          showAds = false;
        });
      },
    ),
  );
  return myBanner;
 }

  @override
  void dispose() {
    super.dispose();
    myBanner.dispose();
    
  }

  @override
  Widget build(BuildContext context) {
    print('printing ads widget fxn.....................');
    return showAds
        ? Container(
            height: 52,
            width: double.infinity,
            margin: EdgeInsets.only(bottom: 5, top: 5,
         left: 8, right: 8),
            child: AdWidget(
              key: UniqueKey(),
              ad: myBanner,
            ),
          )
        : Container();
 }
}

此使用横幅代码作为小部件

【问题讨论】:

    标签: flutter admob ads banner


    【解决方案1】:

    尝试将 showAd = false 置于 initstate 中

    试试这个:

      `class BannerAdUnit1 extends StatefulWidget {
    @override
    _BannerAdUnit1State createState() => _BannerAdUnit1State();
    }
    
    class _BannerAdUnit1State extends State<BannerAdUnit1> {
    static BannerAd myBanner;
    bool showAds = false;
    @override
    void initState() {
    bannerAd();
    super.initState();
    myBanner.load();
    myBanner..responseInfo;
    bool showAds = false;
    }
    
    BannerAd bannerAd() {
    myBanner = new BannerAd(
    adUnitId: 'ca-app-pub-3940256099942544/6300978111',
    size: AdSize.smartBanner,
    request: AdRequest(),
    listener: BannerAdListener(
      onAdLoaded: (ad) {
      print('admob is loaded or loading');
        setState(() {
          showAds = true;
        });
      },
      onAdFailedToLoad: (ad, error) {
      print('admob is dispose or disposing');
        ad.dispose();
        setState(() {
          showAds = false;
        });
      },
    ),
    );
     return myBanner;
       }
    
      @override
      void dispose() {
      super.dispose();
      myBanner.dispose();
    
      }
    
      @override
      Widget build(BuildContext context) {
      print('printing ads widget fxn.....................');
      return showAds
        ? Container(
            height: 52,
            width: double.infinity,
            margin: EdgeInsets.only(bottom: 5, top: 5,
         left: 8, right: 8),
            child: AdWidget(
              key: UniqueKey(),
              ad: myBanner,
            ),
          )
        : Container();
      }
       }  `
    

    【讨论】:

    • 我已经处理了广告,但仍在重新加载广告
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多