我正在将不同用户的数据保存在他们的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']);
}
);
}
` 但我得到一个空值。 我如何检索电子邮件,用户名并将其显示在“文本”小部件中。
答案 0 :(得分:1)
您需要使用FutureBuilder()
,因为上述代码中的uid
将为null,因此请创建一个将返回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) {