飞镖之后的构造函数
问题内容:
这段代码来自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
实例字段。这便于使用计算值初始化最终字段。
初始化程序列表还用于调用其他构造函数,例如: ..., super('foo')
。
从Dart 1.24版开始,初始化器列表也支持assert(...)
检查参数值的方法。
无法读取初始化程序列表,this
因为超级构造函数需要在访问this
有效之前完成,但可以分配给this.xxx
。
指出如user693336的注释中所述:
这也意味着初始化列表在构造器主体之前执行。同样,所有超类的初始化列表都在执行任何构造器主体之前执行。