必须初始化不可为 null 的实例字段 'groupCreated'

Non-nullable instance field 'groupCreated' must be initialized

不可为 null 的实例字段 'groupCreated' 必须初始化。 尝试添加初始化表达式,或在此构造函数中添加字段初始化器,或将其标记为 'late'.

class GroupModel {
  String id;
  String name;
  String leader;
  List<String> members;
  Timestamp groupCreated;

  GroupModel({
    required this.id,
    required this.name,
    required this.leader,
    required this.members,
    required this.groupCreated,
  });

  GroupModel.fromDocumentSnapshot({required DocumentSnapshot doc}) {
    id = doc.id;
    name = doc.get("name");
    leader = doc.get("leader");
    members = List<String>.from(doc.get("members"));
    groupCreated = doc.get("groupCreated");
  }
}

您可能应该为此使用构造函数的初始化程序列表

GroupModel.fromDocumentSnapshot({required DocumentSnapshot doc})
    : id = doc.id,
      name = doc.get("name"),
      leader = doc.get("leader"),
      members = List<String>.from(doc.get("members")),
      groupCreated = doc.get("groupCreated");

使用命名构造函数时,顺序如下:

  1. 初始化列表(在:之后)
  2. superclass的no-arg构造函数
  3. main class 的 no-arg 构造函数

只有在这之后,才会执行构造函数的主体,更像是一个 'on init' 回调。这里的对象应该已经完全构建好了。如果您的值只能在该主体内初始化,则可以使用 late

Dart 网站上的文档 Constructors 部分

对此进行了详细解释

您应该使用前面评论中描述的构造函数或使用工厂:

factory GroupModel.fromDocumentSnapshot({required DocumentSnapshot doc}) {
    return GroupModel(
      id: doc.id;
      name: doc.get("name");
      leader: doc.get("leader");
      members: List<String>.from(doc.get("members"));
      groupCreated: doc.get("groupCreated");
    );
  }