我正在测试一些 Flutter 应用程序并遇到:在 Dart 函数中,它的用途是什么?
我在Firebase for Flutter教程中找到了它。我试图在谷歌中搜索它,但找不到任何东西。
class Record {
final String name;
final int votes;
final DocumentReference reference;
Record.fromMap(Map<String, dynamic> map, {this.reference})
: assert(map['name'] != null),
assert(map['votes'] != null),
name = map['name'],
votes = map['votes'];
Record.fromSnapshot(DocumentSnapshot snapshot)
: this.fromMap(snapshot.data, reference: snapshot.reference);
@override
String toString() => "Record<$name:$votes>";
}
结果工作正常,我只想知道:用于什么。
来自 https://dart.dev/guides/language/language-tour,构造函数部分:
- 超类
在冒号 (:) 之后指定超类构造函数,紧挨着构造函数主体(如果有(。
class Employee extends Person {
Employee() : super.fromJson(getDefaultData());
// ···
}
- 实例变量
除了调用超类构造函数之外,还可以在构造函数体运行之前初始化实例变量。用逗号分隔初始值设定项。
// Initializer list sets instance variables before
// the constructor body runs.
Point.fromJson(Map<String, num> json)
: x = json['x'],
y = json['y'] {
print('In Point.fromJson(): ($x, $y)');
}
您的示例:
因此,在您的情况下,fromMap
-Method 会执行一些断言(在运行构造函数之前(并将变量分配给name
和vote
。由于这些变量是最终的,因此必须在初始化记录实例之前分配它们!
fromSnapshot
只是使用 fromMap
作为超级构造函数。