后面的部分:
称为“初始化列表”。它是一个由-,
分隔的表达式列表,这些表达式可以访问构造函数参数,并且可以分配给实例字段,甚至是final
实例字段。这便于使用计算值初始化最终字段。
初始化程序列表还用于调用其他构造函数,例如: ..., super('foo')
。
从Dart 1.24版开始,初始化器列表也支持assert(...)
检查参数值的方法。
无法读取初始化程序列表,this
因为超级构造函数需要在访问this
有效之前完成,但可以分配给this.xxx
。
指出如user693336的注释中所述:
这也意味着初始化列表在构造器主体之前执行。同样,所有超类的初始化列表都在执行任何构造器主体之前执行。