一尘不染

飞镖之后的构造函数

flutter

这段代码来自flutter画廊,我正在尝试理解和改编它。我会知道这个语法是什么意思:

class DemoItem<T> {
  DemoItem({
    this.valueName,
    this.hintName,
    this.valueSurname,
    this.hintSurname,
    this.builder,
    this.valueToString

  }) : textController = new TextEditingController(text: valueToString(valueName));

特别是我会知道 在构造函数之后的冒号什么意思
,除了已经定义的方法之外,是否还有一种方法可以定义另一个TextEditingController。


阅读 287

收藏
2020-08-13

共1个答案

一尘不染

后面的部分:称为“初始化列表”。它是一个由-
,分隔的表达式列表,这些表达式可以访问构造函数参数,并且可以分配给实例字段,甚至是final实例字段。这便于使用计算值初始化最终字段。

初始化程序列表还用于调用其他构造函数,例如: ..., super('foo')

从Dart 1.24版开始,初始化器列表也支持assert(...)检查参数值的方法。

无法读取初始化程序列表,this因为超级构造函数需要在访问this有效之前完成,但可以分配给this.xxx

指出如user693336的注释中所述:

这也意味着初始化列表在构造器主体之前执行。同样,所有超类的初始化列表都在执行任何构造器主体之前执行。

2020-08-13