Когда мы выдаем состояние в частных обработчиках mapEventToState, мы всегда получаем новое состояние, а не изменяем его. Это потому, что каждый раз, когда мы возвращаемся, blo c будет сравнивать состояние с nextState и будет запускать изменение состояния (переход), только если два состояния не равны. Если мы просто изменим и выдадим один и тот же экземпляр состояния, то состояние == nextState будет иметь значение true, и изменение состояния не произойдет.
Если вы хотите изменить значение состояния, сделайте Функция copyWith для вашего класса модели.
class UserProfile extends Equatable {
final String name;
final Image avatar;
const UserProfile({this.name, this.avatar});
UserProfile copyWith({String name, Image avatar,}) {
return UserProfile(
name: name ?? this.name,
avatar: avatar?? this.avatar,
);
}
@override
List<Object> get props => [name, avatar];
}
if (event is EditUserProfileImageChanged) {
var newState = state.userProfile.copyWith(avatar: event.imgSrc);
yield EditUserProfileTotalState(userProfile: newState);
}