Firebase 从Firestore Flatter中的文档获取用户名

Firebase 从Firestore Flatter中的文档获取用户名,firebase,flutter,dart,google-cloud-firestore,Firebase,Flutter,Dart,Google Cloud Firestore,我需要在个人资料页面上显示用户名。我尝试过多种方法,但每次都显示出错误 这就是我到目前为止所做的: Widget userProfile(BuildContext context) { Stream<DocumentSnapshot> provideDocumentUserName() { return Firestore.instance.collection('user').document('name').snapshots(); } return Container

我需要在个人资料页面上显示用户名。我尝试过多种方法,但每次都显示出错误

这就是我到目前为止所做的:

  Widget userProfile(BuildContext context) {
Stream<DocumentSnapshot> provideDocumentUserName() {
  return Firestore.instance.collection('user').document('name').snapshots();
}

return Container(
    child: StreamBuilder<DocumentSnapshot>(
        stream: provideDocumentUserName(),
        builder: (BuildContext context,
            AsyncSnapshot<DocumentSnapshot> snapshot) {
          if (snapshot.hasError) {
            return CircularProgressIndicator();
          } else {
            Map<String, dynamic> documentFields = snapshot.data.data;
            return Text(documentFields["name"]);
          }
        }));
Widget用户配置文件(构建上下文){
流提供的文档用户名(){
返回Firestore.instance.collection('user').document('name').snapshots();
}
返回容器(
孩子:StreamBuilder(
流:提供的文档用户名(),
生成器:(BuildContext上下文,
异步快照(快照){
if(snapshot.hasError){
返回循环ProgressIndicator();
}否则{
Map documentFields=snapshot.data.data;
返回文本(文档字段[“名称]);
}
}));
我得到的错误是:

对null调用了getter“data”。接收方:null尝试调用: 资料

此外:

引发了另一个异常:NoSuchMethodError:对null调用了方法“[]”

我已经为此工作了几个小时。

您应该获得如下文档字段:

Map<String, dynamic> documentFields = snapshot.data.data();
Map documentFields=snapshot.data.data();

看起来snapshot.data为空,这就是您可能看到此错误的原因。您可能需要检查连接状态。解决此问题的一种方法如下:

  switch (snapshot.connectionState) {
    case ConnectionState.done:
      if (snapshot.hasError)
        return Text('Error: ${snapshot.error}');
      Map<String, dynamic> documentFields = snapshot.data;
      return Text(documentFields["name"]);
  }
  return CircularProgressIndicator(); // unreachable
开关(快照.连接状态){
案例连接状态。完成:
if(snapshot.hasError)
返回文本('Error:${snapshot.Error}');
Map documentFields=snapshot.data;
返回文本(文档字段[“名称]);
}
返回CircularProgressIndicator();//不可访问
对@cipli-onat-post的礼遇,它说“表达式的计算结果不是函数,因此无法调用。”