跳到主要内容

缓存您的应用状态

Hydrated Bloc 是 BLoC 模式的扩展。它有助于自动持久化和恢复 bloc 状态,确保应用状态在应用重启或崩溃后得以保留。

本项目依赖 hydrated_bloc 来持久化以下 bloc 的状态

  • feed_bloc: 持久化 feed 状态。它包含从 API 获取的 feed 文章列表。
  • article_bloc: 持久化从 API 获取的每篇文章的信息。
  • categories_bloc: 持久化从 API 获取的所有 feed 类别。
  • theme_mode_bloc: 持久化用户选择的应用主题模式。

工作原理

hydrated_bloc 包使用其自己的 hydrated_storage 来持久化应用端的 bloc 状态。默认情况下启用。

启动应用时,如果 feed 状态为空,它会从 API 获取 feed 文章。如果 feed 状态不为空,则显示缓存的 feed 文章。当用户滚动到 feed 页面的末尾时,会从 API 获取较旧的 feed 文章并添加到将被持久化的 feed 状态中。

从后台或终止状态打开应用等操作不会影响 bloc 的状态。当用户重启应用时,这些状态将被持久化并恢复。

为了使用户看到最新的文章,他们必须下拉 feed 页面来刷新 feed。

如果在获取 feed 文章时出现任何错误,用户将收到“网络错误”屏幕的通知。用户可以通过点击“重试”按钮重试获取文章。

调试模式缓存

在此项目中,hydrated_bloc 缓存在调试模式下会自动禁用。每次重启应用都会清除 hydrated_bloc 存储状态,因此不会恢复任何状态。要启用它,必须从 bootstrap.dart 文件中删除以下代码

if (kDebugMode) {
await HydratedBloc.storage.clear();
}