enum MyStatus { initial, loading, success, error } class MyState extends Equatable { const MyState({ this.myAsyncData, this.status = MyStatus.initial, }); final AsyncData? myAsyncData; final MyStatus status; @override List<Object> get props => [myAsyncData, status]; // Creates a new state with the changed data keeping the BlocState immutable MyState copyWith({ AsyncData? myAsyncData, MyStatus? status, }) { return MyState( myAsyncData: myAsyncData ?? this.myAsyncData, status: status ?? this.status, ); } }