我们可以在BLOC的EventHandler之外使用emit函数吗?



当我在EventHandler之外使用emit函数时,我得到这个警告?

成员'emit'只能在'package:bloc/src/bloc '中使用。达特或考试。(文档)

这样使用会有问题吗?

class HomeBloc extends Bloc<HomeEvent, HomeState> {
HomeBloc() : super(HomeInitial()) {
on<OpenActivityEvent>((event, emit) {
openSampleActivity(event.context);
});
}
void emitState() {
//The member 'emit' can only be used within 'package:bloc/src/bloc.dart' or a test
emit(HomeInitial());
}
}

如果您传递一个Emitter作为参数,您可以像下面这样实现它:

void emitState(Emitter<HomeState> emit) {
emit(HomeInitial());
}

你可以这样调用emit方法。

on<OpenActivityEvent>((event, emit) {
emitState(emit);
});

你也可以这样做

HomeBloc() : super(HomeInitial()) {
on<OpenActivityEvent>(_onOpenActivityEvent);
}
void _onOpenActivityEvent(OpenActivityEvent event, Emitter<HomeState> emit) {
emit(HomeInitial());
}

最新更新