必须初始化不可为 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");
使用命名构造函数时,顺序如下:
- 初始化列表(在
:
之后)
- superclass的no-arg构造函数
- 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");
);
}
不可为 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");
使用命名构造函数时,顺序如下:
- 初始化列表(在
:
之后) - superclass的no-arg构造函数
- 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");
);
}