【问题标题】:Firebase Flutter Dart :Class '_JsonQuerySnapshot' has no instance method '[]'. Receiver: Instance of '_JsonQuerySnapshot'Firebase Flutter Dart:类“_JsonQuerySnapshot”没有实例方法“[]”。接收方:“_JsonQuerySnapshot”的实例
【发布时间】:2021-08-21 05:50:49
【问题描述】:

我正在尝试以下方法:

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

类 _JsonQuerySnapshot 没有实例方法“[]”。接收者: '_JsonQuerySnapshot' 的实例尝试调用:[] ("Gender")

如何解决此错误?

【问题讨论】:

    标签: json flutter dart google-cloud-firestore


    【解决方案1】:

    函数 .snapshots() 应该返回一个 QuerySnapshot。尝试访问 snapshot.data.docs,你应该得到一个列表,然后你可以使用 doc.data() 访问每个 QueryDocumentSnapshot 数据。

    它看起来像这样:

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

    如果它不起作用,请告诉我并更新答案! :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-03
      • 2020-04-11
      • 1970-01-01
      • 2021-05-04
      • 2020-12-19
      相关资源
      最近更新 更多