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

BlocBuilder builder function gets called only once

晚上好,我一直在使用 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 class 更改变量,但每个事件都会产生相同的状态。尝试将您的主要和次要分成不同的状态 classes 并在您的 mapEventToState.

中分别产生它们