5

flutter_blocを使用して Flutter でアプリを実装する際に問題があります。中心的な概念は理解しましたが、例やガイドがない「エッジケース」を見つけました(少なくとも見つけることができました):

(問題を単純化します) をAuthBloc管理すると呼ばれるブロックがありAppます。状態が のNotAuthenticated場合、アプリは を表示する必要がありますが、状態が のLoginScreen場合、アプリは を表示Authenticatedする必要がありHomeScreenます。内部には 4 つのブロックがあり、各ブロックには状態とイベントがありますが、API からデータを取得するためHomeScreenに、すべてのブロックに依存関係があります。Repositories

RepositoriesAPI リクエストを行うにはトークンが必要です。ここで最初の問題が発生しました。すべてのリポジトリからトークンを取得するにはどうすればよいですか? を使用しUserRepositoryてトークンを保存する場合、依存関係として各リポジトリに渡す必要があります (おそらく動作しますが、正しい方法ではないと思います)。では、これを管理する正しい方法は何でしょうか?

2番目の問題は次のとおりです。

どういうわけか、すべてのリポジトリ クエリでトークンを取得できた場合、トークンが取り消されるとどうなりますか? アプリは に戻る必要があり、そのためにはイベント (たとえば ) を介してLoginScreenに通知する必要があります。はその状態を に変更し、 を再構築します。しかし、問題は次のとおりです。他のブロックまたはリポジトリから通知するにはどうすればよいですか? 私が思いついた最初のアイデアは、依存性注入によるものです。コンストラクター内の他のすべてのブロックに AuthBloc を渡すことができるため、リポジトリ リクエストが期限切れのトークンを返したときに、を呼び出すことができます。しかし、繰り返しになりますが、ブロックがたくさんある場合は、ブロックごとにそれを行う必要があります。それで、これを行う正しい方法は何ですか?AuthBlocInvalidTokenEventAuthBlocNotAuthenticatedLoginScreenAuthBlocXBlocAuthBloc.add(InvalidTokenEvent)

助けてくれてありがとう!

4

1 に答える 1