【发布时间】:2020-09-15 05:39:05
【问题描述】:
当用户尝试注册已创建的帐户时,我遇到了向他们发送电子邮件验证链接的问题。我正在使用 Flutter 和 Firebase 作为后端数据库进行编码。
final FirebaseAuth _firebaseAuth = FirebaseAuth.instance;
abstract class BaseAuth {
Stream<String> get onAuthStateChanged;
Future<String> currentUser();
Future<String> resendVerifyEmail(BaseAuth auth, String email);
}
class Auth implements BaseAuth {...}
Future<String> currentUser() async {
final FirebaseUser user = await _firebaseAuth.currentUser();
print("Getting current user: " + user?.uid);
return user?.uid;
}
Future<String> resendVerifyEmail(BaseAuth auth, String email) async {
try {
final FirebaseUser user = await _firebaseAuth.currentUser();
user.sendEmailVerification();
return user?.uid;
} catch (e) {
print("An Error occurred while sending verification link");
print(e.toString());
return null;
}
}
在try块内部,当调用currentUser()方法时,代码在try-catch块没有结束的情况下退出并返回调用resendVerifyEmail的方法。
我很难在调用 resendVerifyEmail 的弹出窗口中重新发送电子邮件验证。
请让我知道使用 Flutter 从 Firebase 发送电子邮件验证的任何其他方法或如何处理。
void _showVerifyEmailDialog(BuildContext context, String email) {
final BaseAuth auth = AuthProvider.of(context).auth;
showDialog(
context: context,
builder: (BuildContext context) {
// return object of type Dialog
return AlertDialog(
title: new Text("Account Already Exists"),
content: new Text("Please verify account in the link sent to email"),
actions: <Widget>[
new FlatButton(
child: new Text("Resend verification email"),
onPressed: () {
Navigator.of(context).pop();
auth.resendVerifyEmail(); <- Called from this line in login.dart
为什么代码在下面的语句中退出而没有移动到下一行发送电子邮件?
final FirebaseUser user = await _firebaseAuth.currentUser();
【问题讨论】:
标签: flutter firebase-authentication email-verification