問題タブ [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.
flutter - Flutter listen Bloc 状態を Other Bloc から
こんにちは、他のブロックからブロックの状態を聞き取ろうとしています。このパッケージを使用していますhttps://pub.dev/packages/bloc
UserBlocからAuthBlocをリッスンしたいのですが、状態がAuthenticationAuthenticatedの場合、UserBlocはイベントを発生させる必要があります。
今のところ、私はこの問題を抱えています:デバッグ中にstateAuthを出力しようとすると、次のように返されます:
ただし、stateAuth は AuthenticationAuthenticated であり、常に false を返します。
BlocState From Other Bloc クラスをリッスンする方法はありますか?
flutter - Flutter_bloc を使用して通知を表示する方法
私は flutter_bloc パッケージが初めてです。flutter_bloc パッケージを使用して通知アラートを表示する方法。これは、ブロックを使用せずに行った例です。
flutter - BlocProvider.of() が Bloc を含まないコンテキストで呼び出されました。
まず、BLoC がどのように動作するか、その背後にある考え方を知っており、コンストラクターとの違いを知っていBlocProvider()
ますBlocProvider.value()
。
簡単にするために、私のアプリケーションには次のようなウィジェット ツリーを含む 3 つのページがあります。
App()
=> LoginPage()
=> HomePage()
=>UserTokensPage()
ユーザーなどにログインする必要があるため、LoginPage()
アクセスできるようにします。そのために、次のようにウィジェットでビルダーをラップします。UserBloc
LoginPage()
App()
それは明らかにうまく機能します。次に、ユーザーが正常にログインすると、ユーザーは に移動しHomePage
ます。ここで、自分の 2 つの異なるブロックにアクセスする必要があるため、HomePage
既存のものをさらにMultiBlocProvider
渡しUserBloc
、 という名前の新しいブロックを作成しますDataBloc
。私はこのようにします:
これも機能します。HomePage
ユーザーからに移動すると、問題が発生しますUserTokensPage
。コンストラクターで渡したいUserTokensPage
既存のものが必要です。私はこのようにします:UserBloc
BlocProvider.value()
ボタンを押して移動するMyTokensPage
と、次のメッセージでエラーが発生します。
私は何を間違っていますか?PopupMenuButton
どういうわけかブロックを失うウィジェットを抽出したからですか?何が間違っているのかわかりません。
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 ウィジェット
flutter - Flutter Bloc は状態を再構築していません
flutter_bloc パッケージを使用して、この単純なブロックを実装しました。
このイベントで:
そしてこの状態:
私のUIは次のようになります。
残念ながら、MaterialButton を使用して Event を追加すると、Load() 状態は無視されます。UI は Load 状態を再構築しません。出力は次のとおりです。
I/flutter (1955): 降伏状態: 「負荷」のインスタンス
I/flutter (1955): 降伏状態: 「Init」のインスタンス
I/flutter (1955): ビルド状態: 「Init」のインスタンス
flutter-bloc - 状態は同じでも状態の内容が異なる場合に flutter_bloc を使用して UI を変更する方法
flutter_bloc パッケージの BlocBuilder を使用して、状態の変化に対応しています。
問題:複数の連続したイベントにより、連続した BreathalyzerWarmingUp 状態が生成されますが、連続するカウントダウン値は異なります (例: 3、2、1)。ただし、別の状態への実際の遷移はないため、BlocBuilder は後続の状態を無視し、UI はスタックして最初のカウントダウン値のみを表示します。
画面が次のように変化することを期待します。
取得中:
助言がありますか?
flutter - Flutterブロックパターンで譲れない状態
flutter_bloc パッケージを使用して、フラッター ブロック パターンでテスト アプリを構築しています。問題は、Event1 の状態のみがレンダリングされ、コードは mapEventToState で実行されることです。Event2 をトリガーすると、mapEventToState の対応する print ステートメントが実行されるため、yield ステートメントに問題があると思います。
page_bloc.dartのmapEventTOState関数
page_state.dartは次のとおりです。
page_event.dartは以下のとおりです。
ブロックビルダーは次のとおりです。
Scaffold のフローティング アクション ボタンは次のとおりです。
また、足場内の別のウィジェットは次のとおりです。
flutter - flutter_bloc へのグローバルな依存関係
flutter_blocを使用して Flutter でアプリを実装する際に問題があります。中心的な概念は理解しましたが、例やガイドがない「エッジケース」を見つけました(少なくとも見つけることができました):
(問題を単純化します) をAuthBloc
管理すると呼ばれるブロックがありApp
ます。状態が のNotAuthenticated
場合、アプリは を表示する必要がありますが、状態が のLoginScreen
場合、アプリは を表示Authenticated
する必要がありHomeScreen
ます。内部には 4 つのブロックがあり、各ブロックには状態とイベントがありますが、API からデータを取得するためHomeScreen
に、すべてのブロックに依存関係があります。Repositories
Repositories
API リクエストを行うにはトークンが必要です。ここで最初の問題が発生しました。すべてのリポジトリからトークンを取得するにはどうすればよいですか? を使用しUserRepository
てトークンを保存する場合、依存関係として各リポジトリに渡す必要があります (おそらく動作しますが、正しい方法ではないと思います)。では、これを管理する正しい方法は何でしょうか?
2番目の問題は次のとおりです。
どういうわけか、すべてのリポジトリ クエリでトークンを取得できた場合、トークンが取り消されるとどうなりますか? アプリは に戻る必要があり、そのためにはイベント (たとえば ) を介してLoginScreen
に通知する必要があります。はその状態を に変更し、 を再構築します。しかし、問題は次のとおりです。他のブロックまたはリポジトリから通知するにはどうすればよいですか? 私が思いついた最初のアイデアは、依存性注入によるものです。コンストラクター内の他のすべてのブロックに AuthBloc を渡すことができるため、リポジトリ リクエストが期限切れのトークンを返したときに、を呼び出すことができます。しかし、繰り返しになりますが、ブロックがたくさんある場合は、ブロックごとにそれを行う必要があります。それで、これを行う正しい方法は何ですか?AuthBloc
InvalidTokenEvent
AuthBloc
NotAuthenticated
LoginScreen
AuthBloc
XBloc
AuthBloc.add(InvalidTokenEvent)
助けてくれてありがとう!
flutter - 非同期終了後のFlutterブロック更新オブジェクト状態
私はフラッターとブロックパターンを扱っています。Todo チュートリアル ( https://bloclibrary.dev/#/fluttertodostutorial?id=bloc ) は、ブロックについて非常によく説明しています。
しかし、「オブジェクトの同期が完了/実行中」に関する情報を使用してサンプルアプリを拡張したいとは思いません。私はそれがどのように機能するべきかについての私の考えで画像を添付しました。
次の関数は似たようなことをしていると思います-完全なブール値を変更します。しかし、関数を変更して、非同期呼び出しの後に 1 つの obj の bool を変更し、UI に直接起動する方法。obj 1 の後、obj 2 に移動します。
あなたが私の説明を理解し、私を助けてくれることを願っています:-)
flutter - ブロックを提供する正しい方法は何ですか?
こんにちは、フラッターの初心者です。私の質問は、ブロックを提供する正しい方法は何ですか? 名前付きルートセクションのメインファイルにテーマを提供することにしましたが、問題は、他のブロック内にブロックが必要な場合に提供できないことです。これが私のメインファイルルートセクションです。問題は、たとえば、AssetDevicesPageBlocブロックをassetPageブロックに提供したいのですが、アクセスできないため、どうすればそのようなことを行うことができますか。ブロックを間違った方法で提供していますか? 初めて、すべてのブロックを 1 か所で提供してから、各ウィジェットに blockprovider.value を使用したかったのですが、検索したところ、リソースの使用方法が間違っていることがわかりました。助けてください。ありがとう