class CounterBloc extends Bloc<CounterEvent, CounterState> {
CounterBloc() : super(CounterState()) {
on<CounterIncrementEvent>((event, emit) {
emit(state.copyWith(count: state.count++));
// if i use state.count+1 its working.
});
on<CounterDecrementEvent>((event, emit) {
emit(state.copyWith(count: state.count--));
// if i use state.count-1 its working.
});
}
}
当使用 __ 或 ++ 时它不起作用而当我改变 state.count+1 或 state.count-1 时它起作用了查找..那么问题是什么..
当您使用 state.count++ 或 state.count-- 时,传递给 emit 的值是 state.count 的原始值(在增加或减少之前)。此后,state.count 的值会更新,但更新后的值不会在 emit 调用中使用。这意味着状态没有按预期更新。
当你使用 state.count + 1 或 state.count - 1 时,你直接将更新后的值传递给 emit
如果您将 count 变量设置为非final,则使用 state.count++ 和 state.count-- 的代码将会起作用,但大多数情况下不推荐这种方法。
state.count++ 和 state.count-- 在执行操作之前返回值,这就是为什么它不会像您预期的那样更新状态。使用 state.count + 1 或 state.count - 1 直接计算更新后的值,因此它在您的例子中可以正常工作。