从Flatter中的Firebase读取阵列

从Flatter中的Firebase读取阵列,firebase,dart,google-cloud-firestore,flutter,Firebase,Dart,Google Cloud Firestore,Flutter,我在Firebase中定义了一个具有不同字段类型的集合,例如字符串和字符串数组 我可以通过调用以下命令从DocumentSnapshot读取字符串: String name = document['name']; 但是我怎样才能得到列表?打电话 List<String> names1 = document['names']; List<String> names2 = document['ingredients'].map((x) => x.toString())

我在Firebase中定义了一个具有不同字段类型的集合,例如字符串和字符串数组

我可以通过调用以下命令从
DocumentSnapshot
读取字符串:

String name = document['name'];
但是我怎样才能得到
列表
?打电话

List<String> names1 = document['names'];
List<String> names2 = document['ingredients'].map((x) => x.toString())
List names1=文档['names'];
列表名称2=文档['Components'].map((x)=>x.toString())
因此,我得到以下例外情况:

“列表”类型不是“列表”类型的子类型
类型“MappedListIterable”不是类型“List”的子类型


只需使用命名构造函数即可完成:

List<String> names = List.from(document['names']);
List name=List.from(文档['names']);

这里:我不会称之为重复,因为我试图获取数组,而不是对象,但是我在那里找到了答案。如果数组当前不存在,那么在DocumentSnapshot文档上使用这个精确的代码会怎么样?类型“String”不是类型“Iterable”的子类型@Bisclavret我想您在某处将
文档的类型定义为
映射
,这就是为什么会出现此错误的原因。试试这个
listnames=List.from(文档['names']作为Iterable)