我目前正在用dartz包在flutter中设置一个电话号码验证。我的firebase_auth_facade.dart继承了我的i_auth_facade.dart,但当我尝试设置电话号码验证功能时,我得到了错误:
"FirebaseAuthFacade.verifyAndLinkPhoneNumber‘('Future> Function( String,String)')不是'IAuthFacade.verifyAndLinkPhoneNumber’('Future> Function({String smsCode,String verificationId})‘)的有效重写。“
下面是我的代码:
i_auth_facade.dart:
Future<Either<AuthFailure, Unit>> verifyAndLinkPhoneNumber({
@required String verificationId,
@required String smsCode,
});firebase_auth_facade.dart:
@override
Future<Either<AuthFailure, Unit>> verifyAndLinkPhoneNumber(
String verificationId, String smsCode) async {
try {
PhoneAuthCredential phoneAuthCredential = PhoneAuthProvider.credential(
verificationId: verificationId, smsCode: smsCode);
if (phoneAuthCredential == null) {
return left((const AuthFailure.cancelledByUser()));
}
await _firebaseAuth.currentUser.linkWithCredential(phoneAuthCredential);
return right(unit);
} on FirebaseAuthException catch (_) {
return left(const AuthFailure.serverError());
}
}有人知道为什么后者不是有效的覆盖吗?谢谢!
发布于 2020-12-16 00:18:15
明白了。我忘了用大括号把构造函数括起来。firebase_auth_facade.dart应该如下所示:
@override
Future<Either<AuthFailure, Unit>> verifyAndLinkPhoneNumber({
@required String smsCode,
@required String verificationId,
}) async {
try {
final verificationIdStr = verificationId;
final smsCodeStr = smsCode.getOrCrash();
PhoneAuthCredential phoneAuthCredential = PhoneAuthProvider.credential(
verificationId: verificationIdStr, smsCode: smsCodeStr);
if (phoneAuthCredential == null) {
return left((const AuthFailure.cancelledByUser()));
}
await _firebaseAuth.currentUser.linkWithCredential(phoneAuthCredential);
return right(unit);
} on FirebaseAuthException catch (_) {
return left(const AuthFailure.serverError());
}https://stackoverflow.com/questions/65309150
复制相似问题