我正在关注this blog post,以便在用户注册后向用户发送电子邮件验证,这是我在执行sendEmailVerification()
时遇到的问题
未为类型“ UserCredential”定义方法“ sendEmailVerification”。 尝试将名称更正为现有方法的名称,或定义一个名为'sendEmailVerification
的方法
但是博客文章的问题在于,已弃用了某些东西,除此问题外,我设法解决了其中大部分问题。
这是我的代码:-(您可以在import语句中看到包的名称)
import 'dart:async';
import 'package:firebase_auth/firebase_auth.dart' as auth;
import 'package:cloud_firestore/cloud_firestore.dart';
class Auth {
final auth.FirebaseAuth _firebaseAuth = auth.FirebaseAuth.instance;
Future<String> signUp(String email, String password) async {
try {
final user = await _firebaseAuth
.createUserWithEmailAndPassword(email: email, password: password);
try {
await user.sendEmailVerification(); // <== The error happens here
return user;
} catch (e) {
print('Code was not sent!');
}
} catch (e) {
print('An error occurred');
}
}
}
您能帮我解决问题吗?谢谢!
答案 0 :(得分:3)
尝试以下操作:
await user.user.sendEmailVerification();
由于createUserWithEmailAndPassword()
返回一个UserCredential
的实例,并且由于类UserCredential
具有一个名为user
的属性,该属性返回了一个User
的实例。
因此,您可以使用属性user
来调用类User
中的方法sendEmailVerification()
。
答案 1 :(得分:1)
createUserEmailAndPassword()返回一个Future<UserCredential>
,并且一个UserCredential对象没有名为sendEmailVerification
的方法。这就是错误消息所抱怨的。
如果您要使用UserCredential,则可以使用其user属性,像这样请求电子邮件验证:
try {
final credential = await _firebaseAuth.createUserWithEmailAndPassword(email: email, password: password);
await credential.user.sendEmailVerification();
return credential.user;
} catch (e) {
print('Code was not sent!');
}
答案 2 :(得分:0)
需要注意的一件事是,在我尝试使用不同的电子邮件地址之前,我无法使其正常工作。不知何故,我的第一个电子邮件地址被 firebase 弄乱了。