Firebase Flatter Firestore如何将数组从Firestore加载到列表

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

我想将数组从Firestore加载到Flitter中的列表中。我尝试使用List.castFrom将Firestore数组转换为List,但它不起作用

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']}”)