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