Bloc Architecture:从务实和即兴的 authentication/db 连接迁移

Bloc Architecture: migrating from pragmatic and improvised authentication/db connection

我正在调整一个私人项目以使用 BLoC。我喜欢 BLoC 中的严格分隔,但我不知道如何调整我的项目的某些部分。

其中一个部分是持久登录。在我的旧项目中,我使用单例 class 实现了这一点,并且在应用程序启动之前,它会检查 [flutter_secure_storage][1] 中的内容,这些内容由服务器加载和检查。我不熟悉“最佳实践”解决方案。我将如何巧妙地实现这一目标?

另一部分是'database-connection'。我当前的项目使用一个简单的 REST 接口 API。这与身份验证单例结合使用。我知道 BLoC 模式需要一个数据层,它应该获取数据(在我的例子中来自 REST API)。在我目前的情况下,我只是从身份验证单例中获取身份验证数据。在这种情况下更好的做法是什么?

我会使用处理用户帐户的 HydratedBloc UserBloc。 HydratedBloc 可以存储数据,它是有关用户是否登录 flutter_secure_storage 或您想要的任何数据库的数据。然后,BloC 始终处于活动状态,并保存用户打开和关闭应用程序之间的状态。

UserBloc 可以使用日志数据获取事件以向身份验证服务发出请求。它输出 LoggedInState 或 LoggedOutState。在您创建 MaterialApp 后的 Widget 树中,您可以有一个 BlocBuilder 来监听 UserBloc 和 returns 如果用户未登录则为您的登录页面,否则为您的普通应用程序。