有两种可能的方法可以做到这一点:
class Chipmunk {
String name;
int fame;
Chipmunk.named(this.name, [this.fame]);
Chipmunk.famous1() : this.named('Chip', 1000);
factory Chipmunk.famous2() {
var result = new Chipmunk.named('Chip');
result.fame = 1000;
return result;
}
}
Chipmunk.famous1()
是重定向构造函数.您不能在这个函数中分配属性,所以您调用的构造函数必须允许您想要设置的所有属性.这就是我添加fame
作为可选参数的原因.在这种情况下,你可以进入name
和fame
决赛.
Chipmunk.famous2()
是一个工厂构造器,可以创建你想要的实例.在本例中,fame
不能是final(显然,如果在named
构造函数中使用fame
参数,则可能是final).
第一个变体可能更适合您的用例.
以下是语言规范中的文档:
生成构造函数由构造函数名称、构造函数参数列表、重定向子句或初始值设定项列表和可选主体组成.
https://www.dartlang.org/docs/spec/latest/dart-language-specification.html#h.flm5xvbwhs6u个