【发布时间】:2021-11-24 22:21:36
【问题描述】:
我是 Flutter 和 dart 的初学者。我现在开始学习bloc。拿到这段代码的时候真的没搞懂,它是怎么工作的?
CounterBloc() : super(0) {
on<Increment>((event, emit) => emit(state + 1));
}
- 他们是否在调用超级构造函数?
- 定义它的构造函数?
- 为什么要使用关键字?
- 第二行如何工作?
【问题讨论】:
我是 Flutter 和 dart 的初学者。我现在开始学习bloc。拿到这段代码的时候真的没搞懂,它是怎么工作的?
CounterBloc() : super(0) {
on<Increment>((event, emit) => emit(state + 1));
}
【问题讨论】:
几件事。 First bloc 在这里为您提供一个抽象层,因此它的工作原理并不重要为什么,但您应该知道如何 使用它。
但是,以下是您问题的答案:
super 构造函数用于 (super(0)) 设置块的初始状态on 不是关键字。这是bloc 类的method。您可以 ctrl+单击它以查看它是如何定义的,但它不是 dart 关键字。(event, emit) => emit(state + 1))并将其映射到事件类型,以便在以后使用事件时(myBloc.add(Increment()))块将调用给定的回调。 我希望它更清楚。不要犹豫,潜入bloc documentation,因为它是一种宝贵的资源(而且非常漂亮:D)
【讨论】:
Increment 是导致 callback (event, emit) => emit(state + 1) 被调用的 event。回调会发出一个新的 state (state + 1),因此在将事件添加到 bloc(并触发回调)后 bloc 的状态将发生变化。