我是 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);
}
我省略了所有更新该值的各种尝试。
谢谢