我如何从Flubse实时数据库中检索数据

时间:2020-08-16 16:32:25

标签: firebase flutter dart firebase-realtime-database firebase-authentication

enter image description here

我正在将不同用户的数据保存在他们的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']);
    }
    );
  }

` 但我得到一个空值。 我如何检索电子邮件,用户名并将其显示在“文本”小部件中。

1 个答案:

答案 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) {