当我突然编码时,我的所有文件都变成红色,需要一个实现并删除构造函数const关键字。因此,我感到困惑的是,它是否是对dart类的更新,以要求该实现或其他什么。


下面是一个示例类:
class Message {
final String userId;
final String messageText;
final DateTime sentAt;
DocumentReference? reference;
Message({
required this.userId,
required this.messageText,
required this.sentAt,
this.reference,
});
Map<String, dynamic> toJson() => {
'userId': userId,
'messageText': messageText,
'sentAt': sentAt.toString(),
};
factory Message.fromJson(Map<String, dynamic> json) {
return Message(
userId: json['userId'] ?? "",
messageText: json['messageText'] ?? "",
sentAt: DateTime.parse(json['sentAt'] as String),
);
}
factory Message.fromSnapshot(DocumentSnapshot snapshot) {
final message = Message.fromJson(snapshot.data() as Map<String, dynamic>);
return message;
}
// Without this operator there is a compile error.
@override
operator ==(Object other) {
// TODO: implement ==
throw UnimplementedError();
}
}发布于 2022-08-21 13:06:32
您可以使用Equatable包实现相等。要使用const承包商,所有字段都必须是最终的。
class Message extends Equatable {
final String userId;
final String messageText;
final DateTime sentAt;
final DocumentReference? reference;
const Message({
required this.userId,
required this.messageText,
required this.sentAt,
this.reference,
});
Map<String, dynamic> toJson() => {
'userId': userId,
'messageText': messageText,
'sentAt': sentAt.toString(),
};
factory Message.fromJson(Map<String, dynamic> json) {
return Message(
userId: json['userId'] ?? "",
messageText: json['messageText'] ?? "",
sentAt: DateTime.parse(json['sentAt'] as String),
);
}
factory Message.fromSnapshot(DocumentSnapshot snapshot) {
final message = Message.fromJson(snapshot.data() as Map<String, dynamic>);
return message;
}
@override
List<Object?> get props => [userId, messageText, sentAt, reference];
Message copyWith({
String? userId,
String? messageText,
DateTime? sentAt,
DocumentReference? reference,
}) {
return Message(
userId: userId ?? this.userId,
messageText: messageText ?? this.messageText,
sentAt: sentAt ?? this.sentAt,
reference: reference ?? this.reference,
);
}
}https://stackoverflow.com/questions/73434553
复制相似问题