dart - 具有未初始化的最终类变量的构造函数

标签 dart constructor final

我有这个课:

class Entry {
  final String id;
  final List<ListEntry> listEntries;

  Entry({this.listEntries}):
        id = Uuid().v4();

  Entry.withId({this.id, this.listEntries});
}
// create new class instance
var e = Entry();

现在,当我在e.listEntries上调用任何方法时,我将得到一个NPE,因为它尚未初始化。如果没有提供构造函数参数,是否可以将其默认设置为空列表?

最佳答案

您可以使用Factory构造函数:

class Entry {
  final String id;
  final List<String> listEntries;

  factory Entry({List<String> listEntries}) {
    return Entry._(listEntries ?? []);
  }

  Entry._(this.listEntries):
        id = Uuid().v4();

  Entry.withId({this.id, this.listEntries});
}

关于dart - 具有未初始化的最终类变量的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57585310/

相关文章:

flutter - 如果我在 Dart 的某些位置收到空值,该如何对字段进行排序?

ios - Flutter ffmpeg_kit_flutter 无法通过视频绘制文本

groovy - 如何防止使用默认构造函数?

java - Java 子类中的构造函数不正确

c++ - 指定的类、结构或 union 没有可用的默认构造函数

java - 静态最终和多个类加载器

java - 单例模式 : static or static final?

dart - fontFamily 属性在 flutter 中无法正常工作

dart - 如何将 Dart 代码文件与 HTML 页面绑定(bind)?

java - 通过反射更改私有(private)最终字段