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'],
);
}