繁体   English   中英

从 firebase 数据库 flutter 中的 uid 获取用户数据

[英]get user data from uid in firebase database flutter

你能帮助我吗? 我才学Flutter几个月,想从Firebase获取用户数据,显示用户资料。 但它不起作用,这是我的代码:

DatabaseReference _ref;

  var email, nama, noTelp;

  @override
  void initState() {
    // TODO: implement initState
    super.initState();



    final User usernya = _auth.currentUser;
    final String uid = usernya.uid;

    _ref = FirebaseDatabase.instance.reference().child('user').child(uid);

    email = _ref.child('email');
    nama = _ref.child('nama');
    noTelp = _ref.child('noTelp');
  }

以及用户配置文件的代码:

Column(
                            crossAxisAlignment: CrossAxisAlignment.start,
                            children: [
                              _ref == null
                                  ? Text(
                                      'Nama Pengguna',
                                      style: TextStyle(
                                          fontSize: 18,
                                          fontWeight: FontWeight.bold,
                                          color: Colors.white),
                                    )
                                  : Text(
                                      nama.toString(),
                                      style: TextStyle(
                                          fontSize: 18,
                                          fontWeight: FontWeight.bold,
                                          color: Colors.white),
                                    ),
                              Text(
                                email.toString(),
                                style: (TextStyle(color: Colors.white)),
                              ),
                              Text(noTelp.toString(),
                                  style: (TextStyle(color: Colors.white)))
                            ],
                          )

我得到 output 就像这个“数据库参考”实例

这是我在firebase的用户数据:

在此处输入图像描述

我得到了这样的 output:

在此处输入图像描述

您应该调用 Firestore 方法get()来获取数据,然后从回调中读取返回的文档。

FirebaseDatabase.instance.reference().child('user').child(uid).get().then((docSnapshot) {
    print(docSnapshot.data()["email"]); // print data to test
  });

请在此处查找参考资料

它应该是这样的(使用云 Firestore):

  // collection reference
  final CollectionReference _userCollection =
      Firestore.instance.collection('users');
  
  Future getUser(String uid) async {
    return await _userCollection.document(uid).snapshots().map((doc) {
      _userDataFromSnapshot(doc);
    });
  }
  
  // userData from snapshot
  UserData _userDataFromSnapshot(DocumentSnapshot snapshot) {
    return UserData(
      uid: uid,
      nickname: snapshot.data['nickname'],
    );
  }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM