这段代码来自flutter画廊,我正在尝试理解和改编它。我会知道这个语法是什么意思:
class DemoItem<T> { DemoItem({ this.valueName, this.hintName, this.valueSurname, this.hintSurname, this.builder, this.valueToString }) : textController = new TextEditingController(text: valueToString(valueName));
特别是我会知道 在构造函数之后的冒号 是 什么意思 ,除了已经定义的方法之外,是否还有一种方法可以定义另一个TextEditingController。
后面的部分:称为“初始化列表”。它是一个由- ,分隔的表达式列表,这些表达式可以访问构造函数参数,并且可以分配给实例字段,甚至是final实例字段。这便于使用计算值初始化最终字段。
:
,
final
初始化程序列表还用于调用其他构造函数,例如: ..., super('foo')。
: ..., super('foo')
从Dart 1.24版开始,初始化器列表也支持assert(...)检查参数值的方法。
assert(...)
无法读取初始化程序列表,this因为超级构造函数需要在访问this有效之前完成,但可以分配给this.xxx。
this
this.xxx
指出如user693336的注释中所述:
这也意味着初始化列表在构造器主体之前执行。同样,所有超类的初始化列表都在执行任何构造器主体之前执行。