首页 > 解决方案 > Flutter bloc 库 - 如何定义状态对象

问题描述

到目前为止,我一直在我的应用程序中使用 Provider 包进行状态管理,并且效果很好,但是我可以看到使用 bloc_library 包进行一些更可维护和可预测的状态管理的好处。

我正在努力弄清楚如何在以下场景中构造状态对象:假设我有一个页面,可以在其中显示特定日期的用户的食物日志。当用户更改日期时,我会获取新一天的日志,但我想在当天的顶部显示加载指示器,而不是用加载小部件替换整个屏幕。类似地,如果在切换日期时出现错误,我想显示警报并保持在当天。

基于上述情况,我想我无法定义 Loading 或 Error 状态,因为我丢失了当前状态。使用 Provider 包,除了其他属性之外,我还有一个带有加载/错误信息的 PageState 属性,我可以轻松地基于它构建 UI。无论如何,我的印象是我遗漏了一些东西,我将不胜感激有关如何在我的场景中利用 BlocLibrary 的任何建议。

标签: flutter

解决方案


为什么你认为你会失去当前的状态?您可以像这样定义状态类

abstract class MyState {}

class Initial extends MyState {}

class Loading extends MyState {
  final Food food;

  Loading(this.food);
}

class Success extends MyState {
  final Food food;

  Success(this.food);
}

class Error extends MyState {
  final Food food;

  Error(this.food);
}

推荐阅读