Как мне вложить будущее в поток в реализации аутентификации Flutter Firebase? - PullRequest
0 голосов
/ 05 мая 2020
User _userFromFirebaseUser(FirebaseUser user) {
    return user != null
        ? User(
            id: user.uid,
            country: 'India',
            name: user.displayName,
            email: user.email,
            displayPicture: Image.network(user.photoUrl),
            status: 'Active',
          )
        : null;
  }

  Stream<User> get user {
    return _auth.onAuthStateChanged.map(_userFromFirebaseUser);
  }

Я могу легко сопоставить пользователя Firebase с пользователем локальной модели, но что, если у меня есть отдельная коллекция пользователей, из которых я должен получать данные о пользователе каждый раз при изменении authstate? возможно ли это сделать в одном потоке "получить пользователя"? Ниже приведен код, который у меня есть для получения пользователя из облачного хранилища. В основном мне нужен Stream / Future, чтобы получить currentUser из облачного хранилища, запускаемого при каждом onAuthStateChange

Future<DocumentSnapshot> getUser() async {
  return await userCollection.document(uId).get();
}

User _userDataFromSnapshot(DocumentSnapshot snapshot) {
    return User(
      id: snapshot.data['uId'],
      email: snapshot.data['email'],
      name: snapshot.data['name'],
      displayPicture: Image.network(snapshot.data['displayPicture']),
      dateCreated: DateTime.fromMillisecondsSinceEpoch(
          int.parse(snapshot.data['dateCreated'])),
      favGenres: snapshot.data['favGenres'],
      country: snapshot.data['country'],
      status: snapshot.data['status'],
    );
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...