Firebase Flutter Dart :Class '_JsonQuerySnapshot' has no instance method '[]'. Receiver: Instance of '_JsonQuerySnapshot'

2,368

The function .snapshots() should return a QuerySnapshot. try accessing snapshot.data.docs and you should get a List which you can then access each QueryDocumentSnapshot data using doc.data().

it'll look something like that:

StreamBuilder(
                  stream: user
                          .where('Phone Number',
                              isEqualTo: widget.user['ID'])
                          .snapshots(),
                  builder: (context, snapshot) {
                    if (!snapshot.hasData) {
                      return Text("Loading");
                    }
                    // snapshot.data is QuerySnapshot than I access .docs to get List<QueryDocumentSnapshot>
                    var docs = snapshot.data.docs;
                    // Accessing single QueryDocumentSnapshot and then using .data() getting its map.
                    final user = docs[0].data()!;
                    return Padding(
                      padding: const EdgeInsets.only(left: 15),
                      child: Text(
                        "${user["Gender"]}.",
                       
                      ),
                    );
              }),

If it doesn't work let me know and ill update the answer! :)

Share:
2,368
salma.m
Author by

salma.m

Updated on December 30, 2022

Comments

  • salma.m
    salma.m over 1 year

    I am trying the following:

    StreamBuilder(
                      stream: user
                              .where('Phone Number',
                                  isEqualTo: widget.user['ID'])
                              .snapshots(),
                      builder: (context, snapshot) {
                        if (!snapshot.hasData) {
                          return Text("Loading");
                        }
                        var profile= snapshot.data;
                        return Padding(
                          padding: const EdgeInsets.only(left: 15),
                          child: Text(
                            "${profile["Gender"]}.",
                           
                          ),
                        );
                  }),
    

    Class _JsonQuerySnapshot has no instance method '[]'. Receiver: Instance of '_JsonQuerySnapshot' Tried calling: [] ("Gender")

    How can I fix this Error?