实时获取当前登录用户的数据 - Flutter & Firestore

Posted

技术标签:

【中文标题】实时获取当前登录用户的数据 - Flutter & Firestore【英文标题】:Getting data of currently signed in user in real time - Flutter & Firestore 【发布时间】:2020-06-14 14:12:40 【问题描述】:

我希望每个用户都能实时查看他/她的数据。该应用程序需要 用户数据实时变化。我写的代码只有 显示 firestore 集合中第一个用户的数据。什么时候 第二次登录,显示第一个用户的详细信息,而不是 第二个用户。这是我的代码:

   _getTapCount()   Firestore.instance.collection('user_collection').where('userId',

isEqualTo: _uid).snapshots().listen((event) 如果(事件.documents.isNotEmpty) var mydata = event.documents[0].data; 设置状态(() _tapCount = mydata['tapCount']; ); );

【问题讨论】:

【参考方案1】:

要成为当前登录用户的数据,您可以使用以下代码作为示例。

FirebaseUser currentUser = await FirebaseAuth.instance.currentUser();
var userData = await Firestore.instance.collection("user_collection").document(currentUser.uid).get();
print(userData['userDataFieldYouWant']);

使用 currentUser() 方法,您将成为当前登录用户。在此之后,您可以成为 FirebaseUser 对象(此处为 currentUser)的 uid,然后您可以使用 get() 方法访问用户的数据。

【讨论】:

谢谢,效果很好!如何实时获取数据? 在 get() 方法之后,您可以使用例如访问数据颤振代码中的 userData['fieldName']。 是的,它就是这样工作的。该应用程序需要用户数据实时更改。例如,当一个按钮被点击时,当前的用户数据应该是实时变化的,而不需要刷新页面。我希望你明白我的意思。 好的好的。当我正确理解您时,我认为您必须在点击按钮时首先加载更改的用户数据,然后您可以在点击按钮的方法中调用 setState() 方法。希望对您有所帮助。 var userData = Firestore.instance.collection('user_collection').document(currentUser.uid).snapshots().listen((event) if(event.data.isNotEmpty) setState( () _tapCount = event['tapCount']; ); );

以上是关于实时获取当前登录用户的数据 - Flutter & Firestore的主要内容,如果未能解决你的问题,请参考以下文章

当文档ID等于Flutter中当前记录的用户ID时获取firestore数据?

如何在我的 firebase 和 flutter 应用上创建实时用户数?

在android studio中使用firebase实时数据库检索当前登录用户的数据

Flutter Cubit:获取存储变量的好方法?

Firebase + Flutter:获取用于登录的平台用户

从登录用户 Flutter/Firebase 获取文档列表