簡體   English   中英

google_mobile_ads 0.13.0 插件橫幅廣告在 flutter 應用程序中調用 setstate 時自動重新加載

[英]google_mobile_ads 0.13.0 plugin banner ads are auto reload when setstate call in flutter app

我嘗試使用 setstate function 更新 ui 但自動 admob 廣告被重新加載,當與音頻播放器一起使用時,廣告閃爍或重建速度非常快 Z81106A3165374E67F45440C56AFA19 橫幅廣告小部件任何人都知道如何在 flutter import 'package:flutter/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();
 }
}

這個使用橫幅代碼作為小部件

嘗試將 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();
  }
   }  `

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM