flutter - BlocBuilder 构建器函数仅被调用一次

标签 flutter dart bloc

晚上好,我一直在使用 bloc 模式,但遇到了一些问题:无论我做什么,状态更新在 BlocBuilder 上仅被调用一次

我的状态是:

class DateScreenState {
  Future<List<PrimaryPetModifierModel>> primaryPetModifiers;
  Future<List<SecondaryPetModifierModel>> secondaryPetModifiers;

  PrimaryPetModifierModel primaryPetModifierSelected;
  SecondaryPetModifierModel secondaryPetModifierSelected;

  Widget animatedWidget;

  DateTime dateOfSchedule;
  DateTime timeOfSchedule;

  bool shouldReload = false;
  bool isFirstCallAnimation = true;
}

我的 mapEventToState 看起来像这样:

@override
  Stream<DateScreenState> mapEventToState(
      ScheduleDateScreenEvent event) async* {
    if (event is SelectPrimaryModifierEvent) {
      state.primaryPetModifierSelected = event.modifier;
      yield state;
    } else if (event is SelectSecondaryModifierEvent) {
      state.secondaryPetModifierSelected = event.modifier;
      yield state;
    }
  }

我的确切问题是,当我更改 DropdownButton 中的值时,它将触发 SelectedPrimaryModifierEvent 或 SelectedSecondaryModifier 事件,事件触发工作正常,但状态生成和更新只会在之后发生一次任何这些事件第一次触发后,BlocBuilder 构建器函数在任何事件发生后都不会再被调用。

最佳答案

尽管您正在使用 DateScreenState 类更改变量,但每个事件都会产生相同的状态。尝试将您的主要和辅助分为不同的状态类,并在您的 mapEventToState 中分别生成它们。

关于flutter - BlocBuilder 构建器函数仅被调用一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66235016/

相关文章:

c# - 是否可以从移动和桌面应用程序访问同一个 Firestore 集合?

Flutter 音频播放器延迟

flutter - 如何将内联函数分配给 Dart 中的值?

dart - 如何根据先前下载的信息获取图像列表?

有状态小部件的 ListView

flutter - 无法在新页面路线小部件中访问提供商

flutter - 如何动态更改 flutter 中的填充或边距

firebase - 在 DataTable 中用 flutter 显示 firestore 数据

inheritance - Dart 继承和 super 构造函数

flutter - 在 BLoC 中触发初始事件