Как получить электронную почту пользователя из Firebase с помощью flutter?

#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();