Vin*_*ato 32 constructor dart flutter
这段代码来自颤动的画廊,我正在努力理解和改编它.我会知道这个语法意味着什么:
class DemoItem<T> {
DemoItem({
this.valueName,
this.hintName,
this.valueSurname,
this.hintSurname,
this.builder,
this.valueToString
}) : textController = new TextEditingController(text: valueToString(valueName));
Run Code Online (Sandbox Code Playgroud)
特别是我知道构造函数之后冒号是什么意思,如果有一种方法来定义另一个TextEditingController,除了已经定义的那个.
先感谢您.
Gün*_*uer 46
后面的部分:
称为"初始化列表.它是一个,
分离的表达式列表,可以访问构造函数参数,并可以分配给实例字段,甚至是final
实例字段.这对于使用计算值初始化最终字段很方便.
初始化列表也用于调用其他构造函数: ..., super('foo')
.
由于关于Dart版本1.24,初始化程序列表也支持assert(...)
哪些方便检查参数值.
初始化程序列表无法读取,this
因为超级构造函数需要在访问之前完成才this
有效,但它可以分配给this.xxx
.
bin*_*thb 13
为了详细说明其他答案并完成语法,还可以为构造函数提供一个真实的主体以及初始值设定项代码
NonNegativePoint(this.x, this.y) : assert(x >= 0), assert(y >= 0) {
print('I just made a NonNegativePoint: ($x, $y)');
}
Run Code Online (Sandbox Code Playgroud)
^ 这里的断言发生在主体执行之前
另一个用例是在主体执行之前为最终字段赋值
final num x;
final num y;
Point.fromJson(Map<String, num> json) : x = json['x'], y = json['y'] {
print('In Point.fromJson(): ($x, $y)');
}
Run Code Online (Sandbox Code Playgroud)