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')
);
}
},
),