firebase - 如何使用颤振从 Firestore 中检索特定的用户详细信息
问题描述
我是颤振和火力的新手,所以请耐心等待。我在我的应用程序上使用带有firestore和flutter的电子邮件注册,注册时一些额外的字段被保存到firestore。我想检索这些字段以显示在用户个人资料上。
保存到用户集合的字段的关键标识符是注册时自动生成的用户 ID。
我在我的小部件构建上下文中
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;
}
检索用户详细信息
void _userDetails(userID) async {
final userDetails = getData(userID);
setState(() {
firstName = userDetails.toString();
new Text(firstName);
});
}
我尝试将 .then() 添加到 _userdetails 中的设置状态,但它说 userDetails 是 void 类型,不能分配给字符串。此处的当前代码块返回“Future”实例而不是用户详细信息。
解决方案
您的方法被标记为,async
因此您必须等待结果:
Future<void> _userDetails(userID) async {
final userDetails = await getData(userID);
setState(() {
firstName = userDetails.toString();
new Text(firstName);
});
}
推荐阅读
- javascript - 如何从客户端更改翻译文件
- sql-server - 如何修复 Group By 中的聚合,缺少聚合值
- python - google-collab:如何在 Google Collab 中连接到 pymysql?
- php - 将 URL 引用者(来源)限制为根 URL 或同一页面
- javascript - csvtojson npm 将 7945160000000000 舍入为 7.95E+15
- python-3.x - 如何使用 Python 生成数字金字塔(仅使用 1-3)?
- pytorch - ValueError:优化器得到一个空的参数列表
- php - 如何修复错误:SQLSTATE[42S02]: Base table or view not found: 114 6 表 'bbs_hnq.configs' 不存在(SQL: select * from `configs` limit 1)
- reactjs - 正确处理将摄像机流式传输到 HTML 视频元素的 React Hooks
- java - 使用 Executors.newCachedThreadPool 时 Java 常驻内存增长