問題タブ [flutter-bloc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
6 に答える
39535 参照

flutter - BlocProvider.of() が Bloc を含まないコンテキストで呼び出されました。

まず、BLoC がどのように動作するか、その背後にある考え方を知っており、コンストラクターとの違いを知っていBlocProvider()ますBlocProvider.value()

簡単にするために、私のアプリケーションには次のようなウィジェット ツリーを含む 3 つのページがあります。

App()=> LoginPage()=> HomePage()=>UserTokensPage()

ユーザーなどにログインする必要があるため、LoginPage()アクセスできるようにします。そのために、次のようにウィジェットでビルダーをラップします。UserBlocLoginPage()App()

それは明らかにうまく機能します。次に、ユーザーが正常にログインすると、ユーザーは に移動しHomePageます。ここで、自分の 2 つの異なるブロックにアクセスする必要があるため、HomePage既存のものをさらにMultiBlocProvider渡しUserBloc、 という名前の新しいブロックを作成しますDataBloc。私はこのようにします:

これも機能します。HomePage ユーザーからに移動すると、問題が発生しますUserTokensPage。コンストラクターで渡したいUserTokensPage既存のものが必要です。私はこのようにします:UserBlocBlocProvider.value()

ボタンを押して移動するMyTokensPageと、次のメッセージでエラーが発生します。

私は何を間違っていますか?PopupMenuButtonどういうわけかブロックを失うウィジェットを抽出したからですか?何が間違っているのかわかりません。

0 投票する
2 に答える
3416 参照

flutter - BlocProvider.of() が Bloc タイプの Bloc を含まないコンテキストで呼び出されました

エラー: I/flutter ( 5919): ══╡ 例外がウィジェット ライブラリーによってキャッチされました═══════════════════════════ I/flutter (5919): 次のアサーションがビルド ビルダーにスローされました: I/flutter (5919): BlocProvider Bloc タイプの Bloc を含まないコンテキストで .of() が呼び出されました。I/flutter (5919): I/flutter (5919): BlocProvider.of>() に渡されたコンテキストから始まる祖先が見つかりませんでした。私/フラッター ( 5919):
これは、使用したコンテキストが BlocProvider の上のウィジェットに由来する場合に発生する可能性があります。I/flutter ( 5919): 使用されたコンテキストは: BlocBuilder, dynamic>(dirty, state: I/flutter ( 5919): _BlocBuilderBaseState, dynamic>#55a7d(lifecycle state: created)) I/flutter ( 5919): 関連するエラーの原因となったウィジェット: I/flutter (5919): MaterialApp /lib/main.dart:35:12

これが私のメインです

MaterialApp ウィジェット