Я сохраняю имя пользователя в хранилище, например, Пользователи ›имя пользователя› имя пользователя: имя пользователя, почта: почта Я использую электронную почту, передаю аутентификацию.
Я хочу создать собственную модель пользователя, чтобы сохранить имя пользователя и почту текущего пользователя. Я могу успешно найти имя пользователя в функции findCurrentUser () с помощью currentUser.email, но когда я попытался создать модель с тем, что возвращает функция findCurrentUser, я получил ошибку.
Вот полная ошибка:
════════ Исключение обнаружено поставщиком ═════════════════════════════════════ ═══════════════════════ = Было выдано следующее утверждение: исключение было сгенерировано пользователем _MapStream ‹, CustomUser› прослушано
StreamProvider, но
catchError
не был предоставлен.Исключение: тип Future не является подтипом типа String.
Вот мои функции и модель:
class CustomUser {
final String email;
final String username;
CustomUser({this.email, this.username,});
Map<String, dynamic> toJson() => {
'email': email,
'username': username
};
}
dynamic findCurrentUser() async {
var email = _firebaseAuth.currentUser.email;
var user = await FirebaseFirestore.instance
.collection("Users")
.where('email', isEqualTo: email).get().then((value) => value.docs.first.data()['username']);
print('user);
return user;
}
CustomUser customUser(User user) {
return user != null
? CustomUser(email: user.email, username: findCurrentUser())
: null;
}
Stream<CustomUser> get user {
return _firebaseAuth.authStateChanges().map(customUser);
}
И мой провайдер:
StreamProvider(
create: (context) =>
context.read<AuthenticationService>().user,
),