błąd mapowania Firebase dla projektu Flutter [duplikat]

Aug 25 2020
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

1 JakobKühne Aug 25 2020 at 15:46

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

MadhavamShahi Aug 25 2020 at 14:49

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.