2

Flutter の新しい Google モバイル広告パッケージに移行しました。インタースティシャルは完全に機能しますが、ネイティブ広告は画面の大部分に一時的な広告を表示してから、FutureBuilder で待っている ListView コンテナに読み込みます。スクロールし続けると、最終的には希望どおりに表示されます。これがシミュレータの問題なのか、私のコードの問題なのかはわかりません。これが問題の例です...また、それが私のxibファイルかどうかはわかりませんが、googleads-moble-flutter/NativeAdsの例の1を使用していますHERE

ネイティブ広告が正しく表示されない

これが私のコードの例です....

Future futureAd;

 @override
  void initState() {
    super.initState();
    futureAd = adBuilder();
  }

 Future adBuilder() async {
    // TODO: Create a NativeAd instance
    final myAd = NativeAd(
      adUnitId: NativeAd.testAdId,
      factoryId: 'listTile',
      request: AdRequest(keywords: ['kpop', 'music', 'youth']),
      listener: AdListener(
        onAdLoaded: (_) {
          setState(() {
            _isAdLoaded = true;
          });
        },
        onAdFailedToLoad: (ad, error) {
          // Releases an ad resource when it fails to load
          ad.dispose();
          setState(() {
            _isAdLoaded = false;
          });

          print(
              'NATIVE AD ERROR ---- Ad load failed (code=${error.code} message=${error.message})');
        },
      ),
    );
    _ad = myAd;
    _ad.load();
    print(_isAdLoaded);
  }

FutureBuilder(
                                future: futureAd,
                                // ignore: missing_return
                                builder: (context, snapshot) {
                                  switch (snapshot.connectionState) {
                                    case (ConnectionState.none):
                                      return Container();
                                    case (ConnectionState.done):
                                      return Container(
                                        height: 300,
                                        width:
                                            MediaQuery.of(context).size.width,
                                        decoration: BoxDecoration(
                                          color: Colors.amberAccent,
                                          borderRadius:
                                              BorderRadius.circular(20),
                                          boxShadow: [
                                            BoxShadow(
                                              color: Colors.grey,
                                              blurRadius: 15,
                                              offset: Offset(
                                                  4, 8), // Shadow position
                                            ),
                                          ],
                                        ),
                                        child: (_isAdLoaded = true) ? AdWidget(ad: _ad) :
                                        Image.asset('assets/loading.gif'),
                                      );
                                    case (ConnectionState.active):
                                      return Container(
                                        height: 300,
                                        width: MediaQuery.of(context).size.width,
                                        child: Image.asset('assets/loading.gif')
                                      );
                                    case (ConnectionState.waiting):
                                      return Container(
                                          height: 300,
                                          width: MediaQuery.of(context).size.width,
                                          child: Image.asset('assets/loading.gif')
                                      );
                                    default:
                                      return Container(
                                        height: 300,
                                        width: MediaQuery.of(context).size.width,
                                        child: Image.asset('logo500.jpeg')
                                      );
                                  }
                                },
                              ),
4

0 に答える 0