Flutter新版Bloc模式工作原理:CounterBloc示例代码相关疑问咨询
Bloc代码问题解答
你提供的代码如下:
CounterBloc() : super(0) { on<Increment>((event, emit) => emit(state + 1)); }
以下是对应问题的解答:
- 问题1:上述代码中是否调用了父类构造函数?
是。Dart语法中构造函数名称后、大括号前的冒号后内容为初始化列表,这里的super(0)就是显式调用父类Bloc的构造函数,同时将Bloc的初始状态设置为0。 - 问题2:此处是否是在定义CounterBloc自身的构造函数?
是。CounterBloc()就是CounterBloc类无参构造函数的声明,后面跟着的初始化列表、大括号包裹的函数体都是Dart中类构造函数的标准组成部分。 - 问题3:代码中使用on关键字的作用是什么?
这里的on是Bloc库提供的核心方法,作用是注册对应事件类型的处理回调。泛型参数<Increment>用来指定要监听的事件类型,只有Bloc接收到的事件和该泛型类型匹配时,才会执行后续传入的处理函数。 - 问题4:构造函数内第二行代码的运行逻辑是怎样的?
这行代码是注册Increment事件的处理逻辑:当CounterBloc后续接收到外部发送的Increment类型事件时,就会触发传入的箭头函数执行;函数内部会先获取Bloc当前的状态值state,将其加1后通过emit方法把新的状态对外发送,所有监听该Bloc状态的组件都会收到新状态完成对应更新。
内容的提问来源于stack exchange,提问作者Mahi
相关产品推荐
相关产品推荐

