【Flutter】StateError (Bad state: No ProviderScope found) と怒られた時の対応
昨今トレンド(と思われる)の Riverpod + Hooks + StateNotifier での状態管理導入時に表題のエラーが発生しました。
「ProviderScope が見つからない」と言われている通り、アプリケーションを ProviderScope で括らなければいけなかったようです。
// NG
void main() {
runApp(const MyApp());
}
// OK
void main() {
runApp(const ProviderScope(child: MyApp()));
}
新しく Flutter プロジェクトを作ったときなど結構忘れがちです。
Widget Test を行う時も同様なので注意が必要です!
ちなみに、WidgetRef で Provider を参照するところが Widget ツリー上 ProviderScope 配下になっていればいいので、一部だけ Riverpod で実装したい時などは、上記で言う MyApp 全体を括る必要はありません(そういった使い方はあまりお勧めできませんが)。
コメントを残す