如何解决Flutter FirebaseAuth:电子邮件地址格式错误时,SignInWithEmailAndPassword无法处理错误
这是我的FirebaseAuthService类中的电子邮件登录方法:
@override
Future<UserCustom> signInWithEmail(
String emailAddress,String password) async {
try {
UserCredential _signInWithEmailAndPasswordGoogle = await _auth
.signInWithEmailAndPassword(email: emailAddress,password: password);
if (_signInWithEmailAndPasswordGoogle.user != null) {
return _userToUserModel(_signInWithEmailAndPasswordGoogle.user);
} else {
throw PlatformException(
code: 'SIGN_IN_INTERRUPTED',message: 'Sin in interrupted');
}
} on PlatformException {
print('Happened');
rethrow;
}
}
这是应该处理异常的地方:
// creating the submit function
Future<void> _submit(EmailSignInModelProviderPattern model) async {
// if it is on sign in use sign in function ELSE use register function
try {
await model.submit();
Navigator.pop(context);
} on PlatformException catch (e) {
CustomErrorPlatformException(
title: 'Sign in failed',exception: e,).show(context);
} catch(e){
print(e.toString());
}
}
当我输入格式错误的地址时,该过程在方法message_codecs.dart
第572行的dynamic decodeEnvelope(ByteData envelope){...
文件处中断,并显示错误消息:
发生异常。 PlatformException (PlatformException(firebase_auth, com.google.firebase.auth.FirebaseAuthInvalidCredentialsException: 电子邮件地址格式错误。,{code:invalid-email, AdditionalData:{},消息:电子邮件地址格式错误。}))
我不知道如何处理此异常,因为知道在升级到firebase_auth:^0.18.0+1
之前它从未发生过。
解决方法
我遇到了类似的问题,您的代码看起来不错。尝试在VScode的“调试”面板中禁用未捕获的期望为我解决了此问题。 https://github.com/FirebaseExtended/flutterfire/issues/3303#issuecomment-687560133
,检查此问题,解释其原因 https://github.com/FirebaseExtended/flutterfire/issues/1760
。 如果您使用仿真器并使用选项卡按钮更改文本字段,则该电子邮件字段上会留有多余的空间-> * myemail@gmail.com *
为避免多余的空间,您必须使用.trim()
方法。
以您的情况
UserCredential _signInWithEmailAndPasswordGoogle = await _auth
.signInWithEmailAndPassword(email: emailAddress.trim(),password: password);
我想这可以解决您的问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。