flu*_*ter 6 dart flutter flutter-bloc
在Dart,我理解super这样的工作原理:
class Foo {
Foo(int a, int b) {
//Code of constructor
}
}
class Bar extends Foo {
Bar(int a, int b) : super(a, b);
}
Run Code Online (Sandbox Code Playgroud)
我真的不明白在 的(或)类super中使用时发生了什么。cubitblocsflutter_bloc
例如,我不明白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));
}
Run Code Online (Sandbox Code Playgroud)
小智 1
超级构造函数调用父类的构造函数。flutter_bloc 中的肘定义为。
abstract class Cubit<State> extends BlocBase<State> {
Cubit(State initialState) : super(initialState);
}
Run Code Online (Sandbox Code Playgroud)
State在这里只是一个通用类类型,可以是您想要的任何类型。您可以在此处了解有关泛型的更多信息 制作计数器肘节的非常简单的代码是。
class CounterCubit extends Cubit<int> {
CounterCubit() : super(0);
}
Run Code Online (Sandbox Code Playgroud)
这Cubit<int>意味着您的 State 类型为 int 类型int,并将super(0)初始值 state 值设置为“0”。因此,本质上,肘的超级构造函数接受初始状态的值。
在你的情况下:
class CounterState {
int counterValue;
CounterState({@required this.counterValue});
}
class CounterCubit extends Cubit<CounterState> {
CounterCubit() : super(CounterState(counterValue: 0));
}
Run Code Online (Sandbox Code Playgroud)
这Cubit<CounterState>意味着您的 State 类型为 CounterState (这是您在上面声明的类)并super(CounterState(counterValue: 0))初始化一个对象,counterValue=0并且该对象通过超级构造函数作为初始状态传递。
我希望这能澄清你的问题。如果我的解释对您来说不够清楚,请告诉我
| 归档时间: |
|
| 查看次数: |
999 次 |
| 最近记录: |