flutter - Flutter bloc 库 - 如何定义状态对象
问题描述
到目前为止,我一直在我的应用程序中使用 Provider 包进行状态管理,并且效果很好,但是我可以看到使用 bloc_library 包进行一些更可维护和可预测的状态管理的好处。
我正在努力弄清楚如何在以下场景中构造状态对象:假设我有一个页面,可以在其中显示特定日期的用户的食物日志。当用户更改日期时,我会获取新一天的日志,但我想在当天的顶部显示加载指示器,而不是用加载小部件替换整个屏幕。类似地,如果在切换日期时出现错误,我想显示警报并保持在当天。
基于上述情况,我想我无法定义 Loading 或 Error 状态,因为我丢失了当前状态。使用 Provider 包,除了其他属性之外,我还有一个带有加载/错误信息的 PageState 属性,我可以轻松地基于它构建 UI。无论如何,我的印象是我遗漏了一些东西,我将不胜感激有关如何在我的场景中利用 BlocLibrary 的任何建议。
解决方案
为什么你认为你会失去当前的状态?您可以像这样定义状态类
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);
}