就拿这段代码来说,是一个有状态的widget的构造函数。
MyHomePage({Key key, this.title}) : super(key: key);
这和写下面的代码一样吗?
MyHomePage(Key key, String title) {
super(key);
this.title = title;
}
此外,我理解第一个':'开始初始化器列表,或者说在手头的构造函数之前必须调用的函数 -- -- 在本例中,"MyHomePage"。
除了--或者说除了--super之外,还有没有其他函数的情况?
对于第一个问题。
不,这行不通,因为超级类已经被构造出来了,你会得到这个错误。The expression doesn't evaluate to a function, so it can't be invoked
对于第二个问题:
除了初始化字段和调用超级类的构造函数之外,在开发过程中,初始化器列表中也会使用断言(参见什么时候能用)。此处)为例。
import 'dart:math';
class Point {
final num x;
final num y;
final num distanceFromOrigin;
Point(x, y)
: assert(x < y),
x = x,
y = y,
distanceFromOrigin = sqrt(x * x + y * y);
}
main() {
var p = new Point(2, 3);
print(p.distanceFromOrigin);
}
参考。语言之旅--初始化器列表