Flutter: AdMobでバナー広告を2つ表示したら「This AdWidget is already in the Widget tree」のエラー

結論:BannerAdクラスのインスタンスを2つ作成する
2021/11/1 Flutter エラー・バグ日記
AdMob(google_mobile_ads)を導入し、画面の下部にバナー広告を表示した状態で、画面内のボタンタップ時にダイアログを表示するときにも画面上部にバナー広告を表示するようにしたところ、以下のようなエラーが発生。
The following assertion was thrown building AdWidget(dirty, state: _AdWidgetState#18c5b):
This AdWidget is already in the Widget tree
If you placed this AdWidget in a list, make sure you create a new instance in the builder function with a unique ad object.
Make sure you are not using the same ad object in more than one AdWidget.
既にウィジェットツリーに広告ウィジェット(AdWidget)が存在しているため、二重では表示できないよ、ということらしい。
ネットで調べると、別の広告IDのバナーを表示すれば良い、という情報もあったが、AdMobに広告ユニットを追加しなければならないので、他の方法がないか模索。
結果、使用する広告ID自体は同じだが、その広告IDを代入するプロパティ(ゲッター)を、画面下部用とダイアログ表示時用の2つ用意し、それぞれをBannerAdクラスのadUnitId属性の引数として与える形で、BannerAdクラスのインスタンスを2つ作成したらうまく行った。
エラーメッセージをよく読んだら、「新しいインスタンスを作成せよ」とあるので、対処法がきちんと表示されていた。。(後で気づきましたm(_ _)m)
\一般的なエラー対処法をまとめた記事はこちら/
リリースしたアプリ(全てFlutterで開発)
暗記用マーカー - シンプル穴埋め問題作成
超即ToDo –最短2タップで通知登録できるタスク管理アプリ
かんたんプリント管理:アラート・OCR文字認識・検索機能を搭載
シンプルメモ帳「BasicMemo」 - 文字カウント、ワンタッチ入力、タグ管理等の機能を搭載
Macのデスクトップ版もリリースしました。
個人アプリ開発で役立ったもの
おすすめの学習教材
\キャンペーン時を狙えば安価で本場の内容が学べる/
\超初心者向けでオススメな元Udemyの講座/
\Gitの基礎について無料で学べる/
おすすめの学習書籍
\実用的。image_pickerに関してかなり助けられた/
\Dartの基礎文法を素早くインプットできる/
Dart入門 - Dartの要点をつかむためのクイックツアー
おすすめのソフトウェア
\安くて高機能。アプリの独自ドメイン・紹介サイト構築に最適/
\アイコン作成・画面設計・クラウド保存...何でもできて超必須/
おすすめのハードウェア
\リーズナブルな価格で検証端末を確保できる/
\目線の高さを調節しやすく、疲れにくい/
\キータッチが超静音で心地よい/
おすすめのサポートアイテム
\部屋の中を仕切って、集中できる開発環境を作れる/
\部屋の中でも大き過ぎず、長時間座っても疲れない/
\バグと格闘した後の肩こりを解消してくれる/