有没有一种方法可以用一个函数初始化一个类的字段(需要多个步骤)?
示例:代替:
class User {
final String uid;
final String fireBaseDisplayName;
String shortenedName;
User({
this.uid,
this.fireBaseDisplayName,
}) : shortenedName =
fireBaseDisplayName.substring(0, fireBaseDisplayName.indexOf(' '));
}
这可能吗:
User({
this.uid,
this.fireBaseDisplayName,
}) : shortenedName =
shortenName(this.fireBaseDisplayName));
}
shortenName (fireBaseDisplayName) {
return fireBaseDisplayName.substring(0, fireBaseDisplayName.indexOf(' ');
};
相关What is the difference between constructor and initializer list in Dart?
最佳答案
是的,您可以使用函数来初始化字段,但是要注意的是:它必须是static
。在您的类中将函数声明为static
或将其完全移出类。如果该字段不是final
(为了最佳实践,应该是this
,除非该字段必须进行突变),否则可以使用构造函数主体中的常规非静态方法对其进行初始化。
必须使用静态函数初始化final字段的原因是,如果该函数不是静态的,则可以访问this
。但是,在初始化所有最终字段之前,ojit_code不可用。