#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: () {});
},
),