将此代码用于有状态小部件的构造函数:
MyHomePage({Key key, this.title}) : super(key: key);
这与编写以下内容是否相同:
MyHomePage(Key key, String title) {
super(key);
this.title = title;
}
此外,我知道第一个':'将启动初始化程序列表,或者必须在手边的构造函数之前调用的函数-在这种情况下为“MyHomePage”。
在任何情况下,除了-或- super 以外,还有其他功能吗?
最佳答案
对于第一个问题:
不,因为 super 类已经构建,所以它不起作用,并且您会收到此错误:The expression doesn't evaluate to a function, so it can't be invoked
对于第二个问题:
除了初始化字段和调用父类(super class)的构造函数外,在开发过程中还将在初始化器列表中使用断言(请参见何时工作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);
}
引用:
Language Tour - Initializer List
关于flutter - Dart/Flutter super (key:key)示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61968038/