我尝试从Firebase Firestore获取用户的用户数据。为此,我创建了一个模型类。这些数据中还有一个生日参数,我尝试在模型中定义该参数,但显示此错误"参数类型" DateTime?"无法分配给参数类型" DateTime ""
我的代码:
import 'dart:convert';
Users UsersFromJson(String str) => Users.fromJson(json.decode(str));
String UsersToJson(Users data) => json.encode(data.toJson());
class Users {
Users({
required this.id,
required this.url,
required this.name,
required this.birthday,
});
String id;
String name;
String url;
DateTime birthday;
factory Users.fromJson(Map<String, dynamic> json) => Users(
id: json["id"] ?? "",
name: json["name"] ?? "",
url: json["url"] ?? "",
birthday: json["birthday"] != null ? DateTime.parse(json["birthday"]) : null,
);
Map<String, dynamic> toJson() => {
"id": id,
"name": name,
"url": url,
"birthday": birthday?.toString(),
};
}
如何解决呢?
3条答案
按热度按时间gjmwrych1#
使你的
birthday
可以为空。与
如果您不希望它可以为空,则可以放置一个非空回退,如
DateTime.now()
,例如azpvetkf2#
2个变通方案
1.将
non nullable
值传递给birthday
:1.制造
birthday nullable
用这个方法你可以保留现有的代码行。2你的错误将不再显示。
xv8emn3q3#
您可以选择以下两种代码之一:
但是,我建议您更多地使用第一个代码,因为如果
birthday
字段为空,您可以向用户显示没有数据。如果使用第二个代码,我认为没有任何方法可以检查
birthday
字段是否为空。