firebase - Flutter,Firebase Auth如何在应用程序中的任何地方访问uid?

标签 firebase flutter dart google-cloud-firestore firebase-authentication

这是我尝试编写的第一个应用程序。

我在我的应用程序中使用Firebase Auth和Cloud Firestore。如何在不使用等待状态的情况下使登录用户的uid在每个屏幕上可用?

我知道我可以这样:

final FirebaseUser user = await _auth.currentUser();
String id = user.uid;

但是我需要不等待就访问uid,例如在这里:
Stream<QuerySnapshot> get groups {
    return Firestore.instance.collection("userGroups")
    .where("userId", isEqualTo: " uid ").snapshots();
}

当我使用提供程序包时,我以为可以通过它使用它。但是最好的方法是什么呢?
谢谢!

最佳答案

您可以在应用上方provide firebase身份验证流:

StreamProvider<FirebaseUser>.value(
  value: FirebaseAuth.instance.onAuthStateChanged,
  lazy: false,
  child: YourApp(),
)

当想要获得用户时,您可以:

final user = Provider.of<FirebaseUser>(context);

请注意,除了登录和注销外,这不会监听对用户对象的更改。要侦听用户的实际用户更改(例如isVerifiedphotoUrl更改),您需要使用firebase_user_stream之类的包,并使用类似以下内容的内容替换之前的流:

StreamProvider<FirebaseUser>.value(
  value: FirebaseUserReloader.onAuthStateChangedOrReloaded.asBroadcastStream(),
  lazy: false,
),

关于firebase - Flutter,Firebase Auth如何在应用程序中的任何地方访问uid?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61237137/

相关文章:

firebase - 尝试对(Firebase)流使用ExpansionPanelList/ExpansionPanel时出现Flutter错误

android - Flutter .apk 已构建但未安装在设备/模拟器中

Flutter DraggableScrollableSheet - 如何以编程方式展开/折叠

Flutter - 根据用户文本输入从 API 刷新列表的位置

dart - Flutter 中的透明粘性页脚

ios - 如何从Firebase Storage下载并声明大量图像?

android - 我无法连接到 Firebase,因为 bintray-release 插件不支持 Gradle

javascript - 如何从 Firebase 快照返回数组

flutter - 使用 Flutter 嵌套和同步 ListView (类似调度程序)

flutter - 无法使用卡住包为泛型生成 fromJson() 和 toJson()