błąd mapowania Firebase dla projektu Flutter [duplikat]
Widget searchList() {
return ListView.builder(
itemCount: searchSnapshot.docs.length,
itemBuilder: (context, index) {
return SearchTile(
userName: searchSnapshot.docs[index].data["name"],
userEmail: searchSnapshot.docs[index].data["email"],
);
});
}
Operator „[]” nie jest zdefiniowany dla typu „Map <String, dynamic> Function ()”. Spróbuj zdefiniować operator „[]”.
Otrzymuję ten błąd. Pomóż mi z tym
Odpowiedzi
Otrzymałem ten sam błąd po zaktualizowaniu pakietów mojego projektu związanych z Firebase w tej chwili.
Prostą poprawką jest zmiana
searchSnapshot.docs[index].data["name"]
do
searchSnapshot.docs[index].data()["name"]
aby dodać () za danymi.
Wygląda na to, że Google zmienił składnię, aby lepiej pasowała do zestawu SDK administratora w funkcjach chmury Firebase lub jakimkolwiek innym zapleczu.
Źródło: https://github.com/FirebaseExtended/flutterfire/blob/master/packages/cloud_firestore/cloud_firestore/lib/src/document_snapshot.dart#L38 / https://stackoverflow.com/a/63529675/3917673
Zrób to,
Widget searchList() {
return ListView.builder(
itemCount: searchSnapshot.docs.length,
itemBuilder: (context, index) {
return SearchTile(
userName: searchSnapshot.docs[index].data()["name"],
userEmail: searchSnapshot.docs[index].data()["email"],
);
});
}
Wywołanie [] zostało wycofane, teraz musisz użyć .data()metody.