Firebase / Flutter: reload () не обновляет user.isEmailVerified - PullRequest
0 голосов
/ 22 января 2020

Я отправляю ссылку для подтверждения, когда пользователь регистрируется в приложении, но когда я пытаюсь создать поток, который прослушивает, когда пользователь щелкнул ссылку для подтверждения в электронном письме.

Я Я знаю, что мне как-то нужно обновить sh токен пользователя, но я не могу заставить его работать. Я думал, что reload() метод был единственным, но, может быть, я просто неправильно его реализую.

Проблема в том, что Stream всегда возвращает isEmailVerified == false, единственный способ сделать его истинным для пользователя выйти и снова войти в систему, чего я хотел бы избежать. Как мне это сделать?

Я создал это будущее:

//CHECKS IF EMAIL IS VERIFIED
  Future<bool> checkIfEmailIsVerified() async {
    FirebaseUser currUser = await _auth.currentUser();
    await currUser.reload();
    currUser = await _auth.currentUser();
    final bool flag = currUser.isEmailVerified;

    if (currUser != null) {
      return flag;
    } else {
      return false;
    }
  }

и этот поток:

//IS EMAILVERIFIED STREAM
  Stream<EmailVerified> get emailVerified async* {
    final bool isEmailVerified = await checkIfEmailIsVerified();
    yield EmailVerified(isEmailVerified);
  }

1 Ответ

1 голос
/ 22 января 2020

Попробуйте использовать одно ожидание для цепочек фьючерсов

FirebaseUser currUser = await _auth.currentUser().then((u) => u.reload().then((_) => _auth.currentUser()));
final bool flag = currUser.isEmailVerified;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...