flutter bloc 的未定义名称状态

Undefined name state for flutter bloc

我正在尝试将 flutter_bloc v8 用于计数器应用程序,但我无法访问状态值来更新它。它告诉我状态是未定义的。我知道我们可以使用 Cubit 来简化它,但我想看看它如何与普通 bloc 一起工作。

counter_state.dart

abstract class CounterState {}

class CounterValue extends CounterState {
  int value;
  CounterValue(this.value);
}

class CounterLoading extends CounterState {}

counter_bloc.dart

class CounterBloc extends Bloc<CounterEvent, CounterState> {
  CounterBloc() : super(CounterValue(0)) {
    on<IncrementEvent>((event, emit) => _increment(emit));
    on<DecrementEvent>((event, emit) => _decrement(emit));
  }
}

void _increment(Emitter<CounterState> emit) {
  emit(CounterValue(state.value + 1));
}

void _decrement(Emitter<CounterState> emit) {
  emit(CounterValue(state.value + 1));
}

无法访问该状态,因为您在 CounterBloc 之外定义了函数。

试试这个:

class CounterBloc extends Bloc<CounterEvent, CounterState> {
  CounterBloc() : super(CounterValue(0)) {
    on<IncrementEvent>((event, emit) => _increment(emit));
    on<DecrementEvent>((event, emit) => _decrement(emit));
  }

  void _increment(Emitter<CounterState> emit) {
    emit(CounterValue(state.value + 1));
  }

  void _decrement(Emitter<CounterState> emit) {
    emit(CounterValue(state.value + 1));
  }
}