问题描述
我是 Flutter 的新手,我有使用 Redux 或 Vuex 等状态管理的 Web 应用程序的经验,其中模块的初始状态可能类似于:
{
value1: 0,value2: 10,aBool: false,aString: 'Hello'
}
然后基于 Reducers 或 Mutations 我们可以更新状态的单个或多个属性。
现在,在学习 Flutter 后,我决定使用 Bloc/Cubit 并且在网上我找不到问题的正确答案,即使因为大多数示例始终基于糟糕的计数器应用程序,而从来没有基于更现实的场景。
我只能看到基于 Bloc 4 种状态的东西:初始、加载、成功和错误。
这在从 API 获取数据时很好,但如果我的状态也有更多属性怎么办?
如何更新这些属性?
实际上我创建了我的测试 Cubit 来从我的 API 中获取一些东西,它有效。现在我想在状态上添加更多属性并根据操作更新它,我该怎么做?
示例状态:
@freezed
abstract class TestState with _$TestState {
const factory TestState.initial() = _Initial;
const factory TestState.loading() = _Loading;
const factory TestState.success(UserData user) = _Success;
const factory TestState.error(String message) = _Error;
}
例如肘:
class TestCubit extends Cubit<TestCubit> {
TestCubit(this._testClient)
: super(TestState.initial());
final TestClient _testClient;
String greet = 'Hi';
Future<void> testFetchData() async {
...
emit(TestState.success(testData));
...
}
}
我可以成功处理各种初始、加载等...状态。
我可以正确观看 greet
属性:context.read<TestCubit>().greet
我现在应该如何使用 'hello!'
更新该值?
// TestCubit
updateGreet(String text) {
emit(I don't kNow);
}
我省略了所有更新该值的各种尝试。
谢谢
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)