У меня проблема с тем, что мое состояние не обновляется, и я не могу найти проблему в своем коде.
В основном я обновляю свое состояние следующим образом:
Blo c
@override
WorkoutState get initialState => WorkoutsLoaded(
workouts: ["Workout1", "Workout2", "Workout3"], selectedWorkoutIndex: 0);
@override
Stream<WorkoutState> mapEventToState(WorkoutEvent event) async* {
if (event is UpdateWorkoutPageIndex) {
yield* _mapUpdateWorkoutPageIndexToState(event);
}
if (event is IncreaseWorkoutPageIndex) {
yield* _mapIncreaseWorkoutPageIndexToState(event);
}
if (event is DecreaseWorkoutPageIndex) {
yield* _mapDecreaseWorkoutPageIndexToState(event);
}
}
Stream<WorkoutState> _mapUpdateWorkoutPageIndexToState(
UpdateWorkoutPageIndex event) async* {
print("_mapUpdateWorkoutPageIndexToState : " + this.state.toString());
yield WorkoutsLoaded(
workouts: ["Workout0", "Workout2", "Workout3"],
selectedWorkoutIndex: event.pageIndex);
print("_mapUpdateWorkoutPageIndexToState End : " + this.state.toString());
}
Событие
class UpdateWorkoutPageIndex extends WorkoutEvent {
final int pageIndex;
const UpdateWorkoutPageIndex({@required this.pageIndex});
@override
List<Object> get props => [pageIndex];
@override
String toString() => "UpdateWorkoutPageIndex { pageIndex: $pageIndex }";
}
Состояние
class WorkoutsUninitialised extends WorkoutState {}
class WorkoutsLoaded extends WorkoutState {
final List<String> workouts;
final int selectedWorkoutIndex;
const WorkoutsLoaded({
this.workouts,
this.selectedWorkoutIndex,
});
@override
String toString() {
return "WorkoutsLoaded : " + this.workouts.toString() + " - " + this.selectedWorkoutIndex.toString();
}
}
Состояние не меняется, даже если event.pageIndex отличается.
Я могу предоставить дополнительный код при необходимости, но в настоящее время я не уверен, какой код может понадобиться для решения моей проблемы.