Firebase-Mapping-Fehler für das Flatterprojekt [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"],
     );
     });
  }

Der Operator '[]' ist nicht für den Typ 'Map <String, dynamic> Function ()' definiert. Versuchen Sie, den Operator '[]' zu definieren.

Ich erhalte diesen Fehler. Bitte helfen Sie mir dabei

Antworten

1 JakobKühne Aug 25 2020 at 15:46

Ich habe den gleichen Fehler erhalten, nachdem ich jetzt Firebase-bezogene Pakete meines Projekts aktualisiert habe.

Einfache Lösung ist zu ändern

searchSnapshot.docs[index].data["name"]

zu

searchSnapshot.docs[index].data()["name"]

um das () hinter den Daten hinzuzufügen.

Es scheint, als hätte Google die Syntax geändert, um besser mit dem Admin SDK in Firebase-Cloud-Funktionen oder anderen Backends zusammen zu passen.

Quelle: 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

Mach das,


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"],
     );
     });
  }

Das Aufrufen von [] ist veraltet. Jetzt müssen Sie die .data()Methode verwenden.