Firebase Flatter Firestore如何将数组从Firestore加载到列表
我想将数组从Firestore加载到Flitter中的列表中。我尝试使用List.castFrom将Firestore数组转换为List,但它不起作用Firebase Flatter Firestore如何将数组从Firestore加载到列表,firebase,flutter,dart,google-cloud-firestore,casting,Firebase,Flutter,Dart,Google Cloud Firestore,Casting,我想将数组从Firestore加载到Flitter中的列表中。我尝试使用List.castFrom将Firestore数组转换为List,但它不起作用 DocumentReference userDocRef = Firestore.instance.collection('users').document(id); DocumentSnapshot userDocSnapshot = await userDocRef.get(); List groups = await List.castF
DocumentReference userDocRef = Firestore.instance.collection('users').document(id);
DocumentSnapshot userDocSnapshot = await userDocRef.get();
List groups = await List.castFrom(userDocSnapshot.data['groups']);
它显示错误:未处理的异常:类型“\u InternalLinkedHashMap”不是类型“List”的子类型。
这是我的Firestore中的阵列:
我该怎么办?您不能直接将地图转换为列表。您必须使用forEach来分割地图的键和值。以下是获取地图值并将其转换为列表的方法:
FirebaseDatabase.instance
.reference()
.child("users/$id")
.once()
.then((snapshot) {
if (snapshot.value != null) {
snapshot.value.forEach((k, v) {
myList.add(v);
});
} else {
print("value is null");
}
});
您是否尝试过
List groups=userDocSnapshot.data['groups']代码>是,相同的错误是否可以删除此行列表组=等待列表.castFrom(userDocSnapshot.data['groups')
并检查从服务器返回的内容<代码>打印(userDocSnapshot.data['groups'])代码>问题是第三个,它不是一个数组,它是mapNo,我的意思是在第三个文档中没有数组。它是一个映射而不是数组。你可以检查它是哪一个<代码>打印(“id:${userDocSnapshot.documentID]}组:${userDocSnapshot.data['groups']}”)
;