将此代码用作有状态小部件的构造函数:
MyHomePage({Key key, this.title}) : super(key: key);这是否与编写以下代码相同:
MyHomePage(Key key, String title) {
super(key);
this.title = title;
}此外,我理解第一个':‘开始初始化器列表,或者在当前构造函数之前必须调用的函数--在本例中是"MyHomePage“。
有没有什么情况下,除了超级之外还有其他功能?
发布于 2020-05-23 16:12:43
对于第一个问题:
不,它不会工作,因为超类已经构造好了,你会得到这个错误:The expression doesn't evaluate to a function, so it can't be invoked
关于第二个问题:
除了初始化字段和调用超类的构造函数之外,在开发过程中还会在初始化器列表中使用断言(参见when it works here),例如:
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);
}https://stackoverflow.com/questions/61968038
复制相似问题