#firebase #flutter #email #dart #firebase-authentication
#firebase #flutter #Адрес электронной почты #dart #firebase-аутентификация
Вопрос:
Я пытаюсь получить электронную почту пользователя, чтобы отобразить ее на странице учетной записи, вот что я сделал :
getuseremail() async {
FirebaseAuth _auth = FirebaseAuth.instance;
String email;
final user = _auth.currentUser();
setState() {() {
email = user.email;
}}
}
и затем я показываю его, но выдает ошибку, что оно равно null.
Комментарии:
1. В чем именно заключается ошибка? Это то, что электронная почта равна нулю, или пользователь равен нулю?
2. значение электронной почты равно нулю .
3. Проблема будет в том, что вы используете этот метод. Поскольку ваша переменная email объявлена локально в методе, вы не можете получить к ней доступ извне, чтобы отобразить ее в текстовом представлении. Можете ли вы предоставить свой полный код виджета, тогда я смогу дать более конкретный ответ, как это решить.
Ответ №1:
Вы можете попробовать этот код :
String _email;
void getUserEmail() {
FirebaseAuth.instance.currentUser().then((user) {
setState(() {
_email = user.email;
});
});
}
1, CurrentUser возвращает будущее
2, _email необходимо определить поле в состоянии для setState
Ответ №2:
Если пользователь в данный момент вошел в систему, вам нужно выполнить следующее:
getuseremail() async {
FirebaseAuth _auth = FirebaseAuth.instance;
String email;
final user = await _auth.currentUser();
setState() {() {
email = user.email;
}}
}
Использование await
since currentUser()
возвращает Future<FirebaseUser>
, но убедитесь, что пользователь в данный момент вошел в систему, иначе вы не сможете получить электронное письмо.
Ответ №3:
Можете ли вы попробовать это?
final user = _auth.currentUser;
или использовать:
final user = _auth.getCurrentUser();