質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
AdMob

AdMobは、事前に指定した条件に従ってアプリに広告を表示するGoogleのサービス。開発者の向けのサービスで、広告を掲載することにより、収益を得ることが可能です。その他、見た目や雰囲気などアプリに合う広告に変更したり、広告表示の場所を指定することもできます。

Flutter

Flutterは、iOSとAndroidのアプリを同じコードで開発するためのフレームワークです。オープンソースで開発言語はDart。双方のプラットフォームにおける高度な実行パフォーマンスと開発効率を提供することを目的としています。

Q&A

1回答

1228閲覧

Flutterでadmobを実装したいが変数「banner」の初期化を要求される。

shomy

総合スコア9

AdMob

AdMobは、事前に指定した条件に従ってアプリに広告を表示するGoogleのサービス。開発者の向けのサービスで、広告を掲載することにより、収益を得ることが可能です。その他、見た目や雰囲気などアプリに合う広告に変更したり、広告表示の場所を指定することもできます。

Flutter

Flutterは、iOSとAndroidのアプリを同じコードで開発するためのフレームワークです。オープンソースで開発言語はDart。双方のプラットフォームにおける高度な実行パフォーマンスと開発効率を提供することを目的としています。

0グッド

0クリップ

投稿2021/11/16 03:08

編集2021/11/16 11:10

Flutterでgoogle_mobile_ads(https://pub.dev/packages/google_mobile_ads)を使い、
admobを実装しようとしたところ
下記のエラーが出ました。

そのためhot restartすると一瞬エラー画面が写り、
その後に画面が正常になるという挙動になっています。
このエラーの治し方を教えてもらえないでしょうか?

LateInitializationError: Field 'banner' has not been initialized.

main.dart

dart

1void main() { 2 WidgetsFlutterBinding.ensureInitialized(); 3 final initFuture = MobileAds.instance.initialize(); 4 final adState = AdState(initFuture); 5 runApp( 6 Provider.value( 7 value: adState, 8 builder: (context,child)=>MyApp(), 9 ), 10 ); 11}

エラーが出てる.dartファイル該当箇所

dart

1class _NpbPageState extends State<NpbPage> { 2 late BannerAd banner; 3 4 5 6 void didChangeDependencies() { 7 super.didChangeDependencies(); 8 final adState = Provider.of<AdState>(context); 9 adState.initialization.then((status) { 10 setState(() { 11 banner = BannerAd( 12 adUnitId: adState.bannerAdUnitId, 13 size: AdSize.banner, 14 request: const AdRequest(), 15 listener: adState.BannerAdListener2, 16 )..load(); 17 }); 18 }); 19 } 20 21 22 23 24 25 26 27 Widget build(BuildContext context) { 28 return Scaffold( 29 body: Column( 30 children: [ 31 Expanded( 32 child: ListView.builder( 33 itemCount: NpbList.length, 34 itemBuilder: (context,index)=> NanjRow(NpbList[index]), 35 ), 36 ), 37 if (banner == null) 38 SizedBox(height: 50) // Ads 39 else 40 Container( 41 height: 50, 42 child: AdWidget(ad: banner), 43 ) 44 ], 45 ), 46 ); 47 } 48 49}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

古い投稿だが誰かが見たときのために。。。

以下の分岐でbannerはnullにならないのでエラーになる。
bannerが読み込み完了時にフラグをたて、それを条件に使うとよい。

if (banner == null) SizedBox(height: 50) // Ads else Container( height: 50, child: AdWidget(ad: banner), )

投稿2023/06/21 03:18

sukatti1225

総合スコア2

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問