flutter_bloc中的超级构造函数是如何工作的



InDart,我理解super是这样工作的:

class Foo {
Foo(int a, int b) {
//Code of constructor
}
}
class Bar extends Foo {
Bar(int a, int b) : super(a, b);
}

superflutter_bloccubit(或blocs)类中使用时,我真的不明白发生了什么。

我不理解,例如,当CounterCubit类扩展Cubit:CounterCubit extends Cubit<CounterState>CounterState类可以用作cubit的参数。

class CounterState {
int counterValue;
CounterState({@required this.counterValue});
}

class CounterCubit extends Cubit<CounterState> {
CounterCubit() : super(CounterState(counterValue: 0));
}

超构造函数调用父类的构造函数。flutter_bloc中的cubit定义为。

abstract class Cubit<State> extends BlocBase<State> {
Cubit(State initialState) : super(initialState);
}

State在这里只是一个泛型类类型,可以是你想要的任何类型。您可以在这里了解更多关于泛型的信息制作计数器的一个非常简单的代码是。

class CounterCubit extends Cubit<int> {
CounterCubit() : super(0);
}

Cubit<int>表示这里的State类型为int,super(0)将初始值State值设置为"0";因为您的值是int类型。所以本质上,库比特的超级构造函数接受初始状态的值。

在你的例子中:

class CounterState {
int counterValue;
CounterState({@required this.counterValue});
}

class CounterCubit extends Cubit<CounterState> {
CounterCubit() : super(CounterState(counterValue: 0));
}

Cubit<CounterState>意味着你的状态类型是CounterState(这是你在上面声明的一个类),super(CounterState(counterValue: 0))counterValue=0初始化一个对象,该对象通过超级构造函数作为初始状态传递。

我希望这能澄清你的问题。如果我的解释不够清楚,请告诉我。

最新更新