Я создаю приложение Flutter, которое использует Firebase для аутентификации.
После регистрации пользователю отправляется письмо с подтверждением. Затем пользователю показывают экран, чтобы сообщить им, что ему было отправлено электронное письмо. Я хотел бы включить кнопку на этом экране, чтобы они могли отправить второе электронное письмо, если они каким-то образом пропустили первое.
Я обнаружил, что во второй раз, когда я пытаюсь отправить электронное письмо, ответа нет и оставляет асинхронную функцию зависшей. Как только я делаю горячую перезагрузку, кажется, больше нет проблем с отправкой подтверждающего электронного письма.
Я думаю, может быть, это как-то связано с тем, что Firebase пытается предотвратить несколько копий одного и того же запроса? Было интересно, если кто-нибудь знает наверняка или испытал это.
// code to create user and send email
final authResult = await _instance.createUserWithEmailAndPassword(
email: email, password: password);
if (authResult != null) {
await authResult.user.sendEmailVerification();
await _instance.signOut();
return Response(
status: Status.success,
message:
'Successfully created account. Awaiting email verification.',
body: authResult.user);
}
// button press function on the email verification screen
onPressed: () async {
print('attempting to send verification email');
try {
await user.sendEmailVerification();
print("sent");
CustomAlertDialog.messageAlertDialog(
context,
'Verification email sent',
'',
"Continue",
);
} catch (error) {
print("error sending verification error: $error");
CustomAlertDialog.messageAlertDialog(
context,
'Verification email failed',
error,
"Continue",
);
}
}