Я пытаюсь написать функцию в одном файле, чтобы получить текущего зарегистрированного пользователя в других файлах.
Прямо сейчас я просто заставляю его возвращать пользователя, однако при вызове этой функции я получаю Instance of Firebase User в консоли. При попытке getSignedInUser (). Uid говорится, что у класса «Future» нет экземпляра getter «uid». Если в моей функции я распечатываю mCurrentUser.uid (на консоль), я получаю правильную распечатку. Я не хочу это в консоли. Если в другом файле я хочу получить доступ, например, к электронной почте текущего пользователя, я бы хотел вызвать эту функцию, например getSignedInUser (). Email (когда функция возвращает этого пользователя)
В аутентификации.дарт:
getSignedInUser() async {
mCurrentUser = await FirebaseAuth.instance.currentUser();
if(mCurrentUser == null || mCurrentUser.isAnonymous){
print("no user signed in");
}
else{
return mCurrentUser;
//changing above line to print(mCurrentUser.uid) works, but that's useless
//for the purpose of this function
}
}
в homescreen.dart после входа в систему у меня есть кнопка, которая проверяет текущего пользователя:
Widget checkUserButton() {
return RaisedButton(
color: Color.fromRGBO(58, 66, 86, 1.0),
child: Text("who's signed in?", style: TextStyle(color: Colors.white)),
onPressed: () {
print(getSignedInUser().uid);
//applying change to comments in getSignedInUser() function above
//changes this to just call getSignedInUser()
},
);
}
Я ожидаю, что это возьмет возвращенного пользователя из функции getSignedInUser () и позволит мне использовать встроенные функции из класса Firebase Auth. Однако они не заполняются автоматически, как ожидалось, просто выдают ошибку времени выполнения, как указано выше. Я только распечатал его на консоли, чтобы увидеть мой вывод в качестве теста. Как только я узнаю, что я получаю доступ к полям, таким как идентификатор пользователя, я могу использовать эту информацию для выполнения того, что мне нужно, с любых других экранов (пока я импортирую authentication.dart). Спасибо за любую помощь