1

我是 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); 
}

我省略了所有更新该值的各种尝试。

谢谢

4

0 回答 0