Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase 省道内错误:键入';列表<;动态>';不是类型为';地图<;字符串,动态>';与火堆搏斗_Firebase_Flutter_Google Cloud Firestore - Fatal编程技术网

Firebase 省道内错误:键入';列表<;动态>';不是类型为';地图<;字符串,动态>';与火堆搏斗

Firebase 省道内错误:键入';列表<;动态>';不是类型为';地图<;字符串,动态>';与火堆搏斗,firebase,flutter,google-cloud-firestore,Firebase,Flutter,Google Cloud Firestore,我在将firestore文档字段解析为对象列表时遇到问题。这是我的Json结构示例 [ { “名称”:“Nahit Fidancı”, “电子邮件”:relativeaccount@gmail.com", “用户类型”:“相对” }, { “姓名”:“HüseyinÖzkoç”, “电子邮件”:baba@gmail.com", “用户类型”:“相对” } ] 以及试图从Json获取对象列表的代码 factory Patient.patientFromDocumentSnapshot(Docum

我在将firestore文档字段解析为对象列表时遇到问题。这是我的Json结构示例

[
{
“名称”:“Nahit Fidancı”,
“电子邮件”:relativeaccount@gmail.com",
“用户类型”:“相对”
},
{
“姓名”:“HüseyinÖzkoç”,
“电子邮件”:baba@gmail.com",
“用户类型”:“相对”
}
]
以及试图从Json获取对象列表的代码

factory Patient.patientFromDocumentSnapshot(DocumentSnapshot快照){
final jsonResponse=jsonDecode(snapshot.data[“relations”].toString());
RelativeList RelativeList=RelativeList.fromJson(jsonResponse);
返回病人(
亲戚,亲戚,
todoList:List.from(snapshot.data[“todoList”]),
位置:快照。数据[“位置”],
用户类型:快照。数据[“用户类型”]=“患者”
?UserType.patient
:UserType.relative,
uid:snapshot.data[“uid”],
名称:snapshot.data[“name”],
电子邮件:快照.数据[“电子邮件”],
fileImage:snapshot.data[“fileImage”],
性别:快照。数据[“性别”]=“男性”?性别。男性:性别。女性,
生日:DateTime.parse(snapshot.data[“生日”]),
registrationDate:DateTime.parse(snapshot.data[“registrationDate”]),
通知:snapshot.data[“通知”],
);
}
在上面的代码中,从Firestore获取亲戚没有问题。我将解码后的Json存储在
jsonresponse
中,作为
List
的类型。 从调用
RelativeList.fromJson(jsonResponse)
开始出现问题

类相对论列表{
最后的亲属名单;
相对主义者(指亲属);
factory RelativeList.fromJson(列表parsedJson){
列出亲属=
parsedJson.map((i)=>Relative.fromJson(i)).toList();
印刷品(亲属);
返回相对论者(亲属);
}
}
上面的代码,当
List relatives=parsedJson.map((i)=>Relative.fromJson(i)).toList()时已执行,它抛出名为
的错误类型“List”不是类型“Map”的子类型
。 这就是我的
Relative.fromJson()
的样子

factory-Relative.fromJson(Map-parsedJson){
返回亲戚(
患者:列表。来自(parsedJson[“患者”]),
faceModel:parsedJson[“faceModel”],
userType:parsedJson[“userType”]=“患者”
?UserType.patient
:UserType.relative,
uid:parsedJson[“uid”]??“,
名称:parsedJson[“名称”],
电子邮件:parsedJson[“电子邮件”],
fileImage:parsedJson[“fileImage”]??“,
性别:(parsedJson[“性别”]??“男性”)==“男性”
?性别:男性
:性别,
生日:DateTime.parse(parsedJson[“生日”])??
DateTime.now().toIso8601String(),
registrationDate:DateTime.parse(parsedJson[“registrationDate”])??
DateTime.now().toIso8601String(),
通知:parsedJson[“通知”]??“,
);
}
}

有人能帮我一下吗?

您没有正确使用空感知。当您将值传递给任何其他构造函数时,必须检查该值是否为null

使用以下相对类

class Relative {
  var patients;
  var faceModel;
  var userType;
  var uid;
  var name;
  var email;
  var fileImage;
  var notification;
  var registrationDate;
  var birthday;
  var gender;

  Relative(
      {this.name,
      this.birthday,
      this.email,
      this.faceModel,
      this.fileImage,
      this.gender,
      this.notification,
      this.patients,
      this.registrationDate,
      this.uid,
      this.userType});

  factory Relative.fromJson(Map<String, dynamic> parsedJson) {
    return Relative(
      patients: parsedJson["patients"] != null
          ? List<String>.from(parsedJson["patients"])
          : [],
      faceModel: parsedJson["faceModel"] ?? '',
      userType: parsedJson["userType"] == 'Patient'
          ? "UserType.patient"
          : "UserType.relative",
      uid: parsedJson["uid"] ?? "",
      name: parsedJson["name"] ?? '',
      email: parsedJson["email"] ?? '',
      fileImage: parsedJson["fileImage"] ?? "",
      gender: (parsedJson["gender"] ?? 'Male') == 'Male'
          ? "Gender.male"
          : "Gender.female",
      birthday: DateTime.parse(
          parsedJson["birthday"] ?? DateTime.now().toIso8601String()),
      registrationDate: DateTime.parse(
          parsedJson["registrationDate"] ?? DateTime.now().toIso8601String()),
      notification: parsedJson["notification"] ?? "",
    );
  }
}
类相对{
var患者;
var模型;
var用户类型;
变量uid;
变量名;
var电子邮件;
var文件图像;
风险值通知;
风险值登记日期;
生日;
变量性别;
相对的(
{this.name,
这个生日,
这是一封电子邮件,
这个模型,
这个.fileImage,
这个,性别,
本通知,
这个,病人,
这是注册日期,
这个.uid,
这个参数为.userType});
factory Relative.fromJson(映射parsedJson){
返回亲戚(
患者:parsedJson[“患者”]!=null
?列表。从(parsedJson[“患者”])
: [],
faceModel:parsedJson[“faceModel”]??“,
userType:parsedJson[“userType”]=“患者”
?“用户类型。患者”
:“UserType.relative”,
uid:parsedJson[“uid”]??“,
名称:parsedJson[“名称”]??“”,
电子邮件:parsedJson[“电子邮件”]??“,
fileImage:parsedJson[“fileImage”]??“,
性别:(parsedJson[“性别”]??“男性”)==“男性”
?“性别,男性”
:“性别,女性”,
生日:DateTime.parse(
parsedJson[“生日”]??DateTime.now().toIso8601String()),
注册日期:DateTime.parse(
parsedJson[“registrationDate”]??DateTime.now().toIso8601String()),
通知:parsedJson[“通知”]??“,
);
}
}

是的,你说得对。在我尝试了几次之后,我像你一样解决了它。谢谢你的回答。