在BLOC中,emit函数用于向流中发出新的事件。通常情况下,emit函数只应在EventHandler中使用。但是,有时候我们需要在EventHandler之外发出事件,比如在BLOC类的构造函数中。
以下是使用emit函数发出事件的示例代码:
import 'dart:async';
import 'package:bloc/bloc.dart';
enum CounterEvent { increment }
class CounterBloc extends Bloc {
CounterBloc() : super(0) {
// 在构造函数中发出事件
add(CounterEvent.increment);
}
@override
Stream mapEventToState(CounterEvent event) async* {
switch (event) {
case CounterEvent.increment:
yield state + 1;
break;
}
}
}
在以上代码中,我们在CounterBloc的构造函数中使用了add函数(它是emit函数的别名),来发送increment事件。由于我们还没有执行任何的操作,因此这个事件的映射函数将会以初始状态0开始。当我们执行状态的更新操作时,我们会将其更改为1。
下一篇:BLOC状态变化时UI未更新