有没有一种方法可以用一个函数初始化一个类的字段(需要多个步骤)?

示例:代替:

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不可用。

08-18 08:13