这段代码来自颤动的画廊,我正在努力理解和改编它。我会知道这个语法意味着什么:
class DemoItem<T> {
DemoItem({
this.valueName,
this.hintName,
this.valueSurname,
this.hintSurname,
this.builder,
this.valueToString
}) : textController = new TextEditingController(text: valueToString(valueName));
特别是我知道构造函数之后冒号是什么意思,如果有一种方法来定义另一个TextEditingController,除了已经定义的那个。
:
之后的部分称为“初始化列表。它是一个,
分隔的表达式列表,可以访问构造函数参数并可以分配给实例字段,甚至final
实例字段。这可以方便地用计算值初始化最终字段。
初始化列表也用于调用: ..., super('foo')
等其他构造函数。
由于关于Dart版本1.24,初始化列表也支持assert(...)
,这对于检查参数值很方便。
初始化列表无法从this
读取,因为超级构造函数需要在访问this
之前完成,但它可以分配给this.xxx
。
用户693336在评论中提到的指出:
这也意味着初始化程序列表在构造函数体之前执行。此外,所有超类的初始化列表都在执行任何构造体之前执行。