firebase - 我如何在颤振中从 firebse 实时数据库中检索数据
问题描述
我将不同用户的数据保存在他们的 uid 节点中,并且在 uid 节点中我生成了保存数据的不同密钥。我试图从键节点检索电子邮件、用户名。我尝试使用此代码获取电子邮件、用户名:- `
@override
void initState() {
super.initState();
getCurrentUser();
rootRef.child('Manager').child(loggedInUser.uid).child(accountKey);
rootRef.once().then((DataSnapshot snap) {
var value= snap.value;
print(value['username']);
}
);
}
` 但我得到一个空值。我如何检索电子邮件、用户名并将其显示到文本小部件。
解决方案
您需要使用 a FutureBuilder()
,因为uid
在上面的代码中将是 null ,因此创建一个将返回 a 的方法Future<DataSnapshot>
:
Future<DataSnapshot> getData() async{
var user = await FirebaseAuth.instance.currentUser();
final dbRef = FirebaseDatabase.instance.reference().child('Manager').child(user.uid).child(accountKey);
return await dbRef.once();
}
然后在里面使用它FutureBuilder
:
FutureBuilder(
future: getData(),
builder: (context, AsyncSnapshot<DataSnapshot> snapshot) {
if (snapshot.hasData) {
推荐阅读
- c++ - 使用分治法的数组的最大公约数
- javascript - 将文件数组拆分为 N 个块
- javascript - Cordova Android 应用程序无法识别 Javascript 模块中的函数
- kotlin - kotlin 中的“直接来自函数体”是什么意思?
- java - 如何从安卓应用中删除谷歌地图?
- c# - 如何使实体框架对每条记录使用 1 个更新查询而不是 1 个?
- android - 找不到 com.github.ybq:Android-SpinKit:1.4.0
- angular - 角度 > 材质表中的过滤器
- c# - 需要关于接口隔离原则的建议
- reactjs - 如何使用历史对象在注销时删除 redux 状态