Flutter, Firebase Auth Как получить доступ к uid везде в приложении? - PullRequest
0 голосов
/ 15 апреля 2020

это мое первое приложение, которое я пытаюсь кодировать.

Я использую Firebase Auth и Cloud Firestore в своем приложении. Как я могу сделать UID зарегистрированного пользователя доступным на каждом экране, не используя await?

Я знаю, что могу получить это так:

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();
}

Поскольку я использую пакет провайдера, я думал, что смогу сделать его доступным через него. Но как лучше всего это сделать? Спасибо!

1 Ответ

0 голосов
/ 15 апреля 2020

Вы можете provide поток авторизации firebase над вашим приложением:

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

, и когда вы хотите получить пользователя, вы можете:

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

Обратите внимание, это не будет слушать изменения объекта пользователя за пределами входа и выхода. Для прослушивания реальных пользовательских изменений (таких как isVerified или photoUrl изменения) вы захотите использовать пакет типа firebase_user_stream и заменить предыдущий поток чем-то вроде:

StreamProvider<FirebaseUser>.value(
  value: FirebaseUserReloader.onAuthStateChangedOrReloaded.asBroadcastStream(),
  lazy: false,
),
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...