I’m trying to emmit a copy state, but widget BlocBuilder
never update state.
This is my Widget build witch never update when emmit(state.copyWith())
:
BlocBuilder<CouponsCubit, CouponsState>(
buildWhen: (previous, current) => true,
bloc: couponsCubit,
builder: (context, state) =>
_buildBodyFiltersPage(state),
)
This is the method in my CubitBloc called from my filter button:
void toggleFilter(FilterModel filter) {
if (_filters.contains(filter)) {
_filters.remove(filter);
} else {
_filters.add(filter);
}
emit(state.copyWith(filters: [..._filters]));
}
This is my Cubit state:
class CouponsState extends Equatable {
final List<CCouponCardType> filters;
const CouponsState._({this.filters = const []});
@override
List<Object?> get props => [filters];
CouponsState copyWith({
List<CCouponCardType>? filters,
}) =>
CouponsState._(
filters: filters ?? this.filters,
);
}
class EmptyState extends CouponsState {
const EmptyState({
super.filters,
}) : super._();
@override
List<Object?> get props => [filters];
}
class LoadingState extends CouponsState {
const LoadingState({
super.filters,
}) : super._();
@override
List<Object?> get props => [filters];
}
class LoadedState extends CouponsState {
final CCouponListAdapter couponsList;
const LoadedState({
required this.couponsList,
super.filters,
}) : super._();
@override
LoadedState copyWith({
List<CCouponCardType>? filters,
}) => LoadedState(
couponsList: couponsList ?? this.couponsList,
filters: filters ?? this.filters,
);
@override
List<Object?> get props => [couponsList, filters];
}
class ErrorState extends CouponsState {
final String errorMessage = noLoadCouponsString;
const ErrorState({
super.filters,
}) : super._();
@override
List<Object?> get props => [errorMessage, filterString, filters, sort];
}
What I’m missing?