WidgetsFlutterBinding.ensureInitialized()とは
結論:
WidgetsFlutterBinding.ensureInitialized(); は、
Flutterエンジンを確実に初期化するためのコマンド。
以下のような 非同期処理を main() 関数で使う前に必要:
-
Firebase.initializeApp()(Firebaseの初期化) -
SharedPreferences.getInstance()(ローカルデータ取得) -
rootBundle.load()(アセット読み込み)
これらは、Flutterのバインディング(描画やサービスアクセスの準備)が
まだ終わっていない状態では使えず、エラーになることがある。
使用例(Firebase + Riverpod構成)
void main() async {
WidgetsFlutterBinding.ensureInitialized(); // Flutterの初期化
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
runApp(const ProviderScope(child: MyApp())); // Riverpodのルートスコープ
}
まとめ
-
main()がasyncかつawaitを使うときは必ず書く - 書かないと、初期化されていない状態でエラーになることがある