我在使用Flutter_bloc在 Flutter 上实现应用程序时遇到问题。我理解了核心概念,但我发现了一个没有示例或指南的“边缘案例”(至少我能找到):
(我将简化问题)我有一个名为的集团AuthBloc
来管理App
. 如果状态是NotAuthenticated
,则应用程序应显示 ,LoginScreen
但如果是Authenticated
,则应用程序应显示HomeScreen
. 在里面HomeScreen
我有 4 个块,每个块都有它的状态和事件,但是它们都依赖于不同Repositories
的从 API 获取一些数据。
所有这些都Repositories
需要一个令牌来发出 API 请求。第一个问题来了。如何从所有存储库中获取令牌?如果我使用 aUserRepository
来存储令牌,我需要将它作为依赖项传递给每个存储库(可能有效,但我认为它不是正确的方法)。那么,管理这个问题的正确方法是什么?
第二个问题是:
如果我能以某种方式在所有存储库查询中获得令牌,那么当令牌被撤销时会发生什么?该应用程序应该返回到LoginScreen
并且为此我需要AuthBloc
通过事件通知 (例如InvalidTokenEvent
)。并且AuthBloc
应该将其状态更改为NotAuthenticated
并且将重建LoginScreen
. 但问题是:我如何AuthBloc
从其他集团或存储库通知?我的第一个想法是通过依赖注入:我可以将 AuthBloc 传递给构造函数中的每个其他块,因此当存储库请求返回令牌过期时,XBloc
可以调用AuthBloc.add(InvalidTokenEvent)
. 但同样,如果我有很多集团,我需要在每个集团中都这样做。那么,这样做的正确方法是什么?
感谢您的任何帮助!