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
.
中分别产生它们
晚上好,我一直在使用 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
.