firebase - 颤振:[错误:颤振/lib/ui/ui_dart_state.cc(199)]未处理的异常:'CustomException'的实例
问题描述
我正在尝试使用 firebase auth 执行移动身份验证。在执行注册之前的注册过程中,我正在检查手机号码是否已经存在(如果存在)我正在抛出一个自定义异常。
代码
class CustomException implements Exception {
String cause;
CustomException(this.cause);
}
Future mobileAuth(
String number, BuildContext context, Customer newCustomer) async {
try {
_databaseService
.customerStream(customer: newCustomer)
.listen((event) async {
//Throwing custom exception if user exists
if (event.length > 0) {
throw CustomException("got error user");
}
await _firebaseAuth.verifyPhoneNumber(
phoneNumber: number,
verificationCompleted: (PhoneAuthCredential credential) async {
await FirebaseAuth.instance
.signInWithCredential(credential)
.then((value) async {
if (value.user != null) {
Navigator.of(context).pushReplacement(MaterialPageRoute(
builder: (context) => HomeScreen(index: 3)));
}
});
},
verificationFailed: (FirebaseAuthException e) {
if (e.code == 'invalid-phone-number') {
print('The provided phone number is not valid.');
}
Navigator.of(context)
.push(MaterialPageRoute(builder: (context) => MobileError()));
},
codeSent: (String verificationId, int? resendToken) {
Navigator.of(context).push(MaterialPageRoute(
builder: (context) => SignupForm3(
phoneNumber: number,
verificationCode: verificationId,
newCustomer: newCustomer,
)));
},
codeAutoRetrievalTimeout: (String verificationId) {
},
);
});
return true;
} on CustomException catch (e) {
print("User already exists ");
print(e.cause);
return false;
} on FirebaseAuthException catch (e) {
return false;
} on PlatformException catch (e) {
print(e.message);
return false;
} catch (e) {
print(e.toString());
Navigator.of(context)
.push(MaterialPageRoute(builder: (context) => MobileError2()));
return false;
}
}
我收到了这个未处理的异常错误。但是我已经实现了 catch 来处理这个自定义异常。
[错误:flutter/lib/ui/ui_dart_state.cc(199)] 未处理的异常:“CustomException”的实例
解决方案
我认为您的if 检查通过 false 因此永远不会调用您的异常。
事件的长度很可能始终大于0,因此您的if 检查将始终通过。
但是您可以查看文档以查看他们是否有实现来检查此类内容。
推荐阅读
- oracle - ORACLE 新手。无法在 SQL Plus 或 ODP.net 中连接,但可以使用 SQL Developer 进行连接 - 全部使用相同的用户/密码
- apache-spark - Files\spark-2.4.5-bin-hadoop2.7\bin\..\conf] 此时出乎意料
- javascript - 为什么使用 node.js 和 express 发布请求失败
- python - 使用 range() 或 slice() 对二维 ndarray 进行切片的区别
- reactjs - 使用 react 测试库测试 react-contenteditable
- python - 在 Python 中创建列表时如何忽略连字符?
- javascript - 类不会使用 classList.remove() 删除?
- javascript - (HTML/Js) 使用提示和承诺的身份验证
- user-interface - 验证错误上的两个内联 TextFormField 错误空格
- docusignapi - 更改发件人在 Docusign 中看到的措辞