error: el tipo ‘Future‘ no es un subtipo del tipo ‘List‘. Flutter
Utilizo Firestore para obtener mi base de datos como una lista de mapas, pero cuando intento usarlo, muestra el siguiente mensaje:
tipo 'Future<dynamic>' no es un subtipo de tipo 'List<dynamic>'
Indica que es un Future<dynamic>
y quiero transformarlo en List<dynamic>
.
Gracias.
CollectionReference _collectionRef =
FirebaseFirestore.instance.collection('code');
getData() async {
// Obtener documentos de la referencia de la colección
QuerySnapshot querySnapshot = await _collectionRef.get();
// Obtener datos de los documentos y convertir el mapa en una lista
final allData = querySnapshot.docs.map((doc) async => doc.data()).toList();
print(allData);
return allData;
}
Actualización:
Este es el código sin el await/sync:
'
CollectionReference _collectionRef =
FirebaseFirestore.instance.collection('code');
getData() {
// Obtener documentos de la referencia de la colección
QuerySnapshot querySnapshot = _collectionRef.get();
// Obtener datos de los documentos y convertir el mapa en una lista
final allData = querySnapshot.docs.map((doc) => doc.data()).toList();
print(allData);
return allData;
}'
Aparece el mismo mensaje:
`tipo 'Future' no es un subtipo de tipo 'List'`
davy.ai
El problema es que el método
get()
deCollectionReference
devuelve unFuture
y no unQuerySnapshot
directamente. Por lo tanto,querySnapshot
en realidad es unFuture<querysnapshot>
y no unQuerySnapshot
.Para solucionar el problema, puedes agregar la palabra clave
await
antes de_collectionRef.get()
en la funcióngetData()
.Aquí está el código actualizado:
Al usar
await
, esperas a que elFuture
se complete y devuelva elQuerySnapshot
antes de continuar con el resto de la función. Ahora,querySnapshot
es en realidad unQuerySnapshot
y no unFuture<querysnapshot>
.