Проверка почты Firebase

#firebase #flutter #dart #firebase-authentication

#firebase #флаттер #dart #firebase-аутентификация

Вопрос:

Я просто хочу создать экран проверки, и он закроется, когда любой пользователь нажмет на отправленную ссылку проверки Firebase. Должен ли я добавить для этого функцию future?

 if (!user.emailVerified){
  user.sendEmailVerification();
  Navigator.push(context,MaterialPageRoute(builder: (context) => VerifyScreen(),),);
}
 

Что я должен добавить к этому коду?

Ответ №1:

Есть несколько способов, и это зависит от того, какое поведение вы хотите иметь. Если я вас правильно понимаю, я бы, вероятно, создал Cubit, который подписывается на userChanges(), а на странице VerifyScreen() есть BlocListener, который перенаправляет пользователя с этого экрана, когда пользователь подтвердил электронное письмо по ссылке.

Псевдокод

Часть в Cubit:

 FirebaseAuth.instance.userChanges().listen((user) {
  if (user.emailVerified) {
    emit(UserEmailVerificationState.verified());
  }
});
 

Часть в VerifyScreen():

       BlocListener<UserEmailVerificationCubit, UserEmailVerificationState>(
        listener: (context, state) {
          state.maybeMap(
              verified: (_) {
                ExtendedNavigator.of(context).replace(Routes.secretPage);
              },
              orElse: () {});
        },
      ),