【问题标题】:Flutter, Firebase Auth How to access uid everywhere in the app?Flutter,Firebase Auth 如何在应用程序中随处访问uid?
【发布时间】:2020-04-15 19:32:52
【问题描述】:

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

我在我的应用中使用 Firebase Auth 和 Cloud Firestore。如何在不使用 await 的情况下使登录用户的 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();
}

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

【问题讨论】:

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


    【解决方案1】:

    您可以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,
    ),
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-31
      • 2019-07-10
      • 2019-05-15
      • 2017-01-17
      • 1970-01-01
      • 2020-04-26
      • 1970-01-01
      • 2017-08-24
      相关资源
      最近更新 更多