首页 > 解决方案 > 我一直在尝试将数据从 Firestore 检索到 Flutter 的 Future builder 但在第一次构建时我收到错误消息我在刷新后得到数据

问题描述

在此处输入图像描述 [在此处输入图像描述][2] Future _getName() async{ return await Firestore.instance.collection("admin_details").document(_username).get(); }

FutureBuilder<DocumentSnapshot>(
                  future: _getName(),
                  builder: (context,snapshot) {
                    if (snapshot.connectionState == ConnectionState.done) {
                      if (snapshot.hasData) {
                        if (snapshot.data != null) {
                          return Text(snapshot.data['first_name']);
                        }
                        else {
                          return Text("Loading...");
                        }
                      }

                      else {
                        return Text("No Data");
                      }
                    }
                    else{
                      return null;
                    }
                  }
              ),

════════ 小部件库捕获的异常═════════════════════════════␕════════════ ══════════════════ 在构建 FutureBuilder(脏,状态:_FutureBuilderState#8f31b)时引发了以下 NoSuchMethodError:在 null 上调用了方法“[]”。接收者:null 尝试调用:

相关的导致错误的小部件是:FutureBuilder file:///D:/Flutter/ecoleami1_0/lib/StudentActivity.dart:52:28 当抛出异常时,这是堆栈:

0 Object.noSuchMethod (dart:core-patch/object_patch.dart:53:5)

1 DocumentSnapshot.[](包:cloud_firestore/src/document_snapshot.dart:31:42)

2 _StudentActivityPageState.build。(包:ecoleami1_0/StudentActivity.dart:57:50)

3 _FutureBuilderState.build(包:flutter/src/widgets/async.dart)

4 StatefulElement.build(包:flutter/src/widgets/framework.dart:4334:27)

... ═══════════════════════════════════════␐════════␐═══ ══════════════════════════════════════════════════ ═══

任何人都可以帮助我吗?

标签: firebaseflutterdartgoogle-cloud-firestore

解决方案


我现在正在打电话,所以不是 100% 确定,但这可能是,因为当连接状态不是这样做时,您的代码返回 null:

将 'return null' 行替换为 return Text('loading');


推荐阅读