gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 04:51:44 24 4
gpt4 key购买 nike

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

我在我的应用程序中使用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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com