如何使用flutter从Firestore中检索特定的用户详细信息

时间:2018-12-26 12:59:16

标签: firebase dart flutter google-cloud-firestore

我是扑扑和火力爆发的新手,所以请多多包涵。我正在使用Firestore进行电子邮件注册,并在我的应用程序上抖动,注册后,一些其他字段会保存到Firestore。我想检索这些字段以显示在用户个人资料上。

保存到用户集合的字段的关键标识符是注册后自动生成的用户ID。

我在小部件构建上下文中有一个

spring.messages.basename=messages/messages,classpath:moduleI/resources/messages/messages

与我关联的数据方法是:

child: new FutureBuilder<FirebaseUser>(
        future: _firebaseAuth.currentUser(),
        builder: (BuildContext context, AsyncSnapshot<FirebaseUser> snapshot) {
          if (snapshot.connectionState == ConnectionState.done) {
            String userID = snapshot.data.uid;
            _userDetails(userID);
            return new Text(firstName);
          }
          else {
            return new Text('Loading...');
          }
        },
      ),

}

要检索用户详细信息

Future<void> getData(userID) async {
// return await     Firestore.instance.collection('users').document(userID).get();
DocumentSnapshot result = await     Firestore.instance.collection('users').document(userID).get();
return result;

}

我曾尝试在.userntails中将.then()添加到设置状态,但其说法是userDetails是无效类型,不能分配给字符串。 这里的当前代码块返回“ Future”的实例,而不是用户“ Details”。

1 个答案:

答案 0 :(得分:0)

您的方法被标记为async,因此您必须等待结果:

        Future<void> _userDetails(userID) async {
        final userDetails = await getData(userID);
                    setState(() {
                          firstName =  userDetails.toString();
                          new Text(firstName);
        });
        }