在UI Firebase身份验证中显示异常错误
首先,我是个新手,我读了很多文章,但什么也没得到 我有什么问题? 我有两个页面auth.dart和login.dart。在auth.dart页面中,我有一个名为AuthService的类,该类包含以下代码(切中要害): 这也会返回null在UI Firebase身份验证中显示异常错误,firebase,flutter,dart,firebase-authentication,Firebase,Flutter,Dart,Firebase Authentication,首先,我是个新手,我读了很多文章,但什么也没得到 我有什么问题? 我有两个页面auth.dart和login.dart。在auth.dart页面中,我有一个名为AuthService的类,该类包含以下代码(切中要害): 这也会返回null 如果手机号码不正确或OTP不正确,我需要向用户显示错误消息。请任何人帮我解决这个问题。好吧,首先你需要倾听异常并等待它,如果出现预期,你可以返回false,然后根据情况做些事情,就像这样 您可以返回一个包含结果和消息的映射,如下所示 { 'message'
如果手机号码不正确或OTP不正确,我需要向用户显示错误消息。请任何人帮我解决这个问题。好吧,首先你需要倾听异常并等待它,如果出现预期,你可以返回false,然后根据情况做些事情,就像这样 您可以返回一个包含结果和消息的映射,如下所示
{
'message': message,
'success' : true or false depending on the state of the request
}
so
在AuthService.dart中
验证失败:(AuthException异常){
//我可以使用print在调试控制台中看到异常
//返回异常;
返回{
“消息”:异常,
“成功”:错误
};//表示验证失败;
},
在LoginScreen.dart中
无效显示警报(消息){
showDialog(上下文:上下文,生成器:(上下文){
返回警报对话框(
标题:信息,
);
});
}
onPressed:async(){
//在这里,我调用上述类的方法signInWithPhone
final phone=_phoneController.text.trim();
最终结果=使用电话(电话、上下文)等待授权登录;
如果(!result['succeess']){
this.showart(结果['message']);
}
}
谢谢您的回答,它是有效的,但是如果我想显示verificationFailed方法的错误消息,而不是在LoginScreen中显示我的硬编码错误,还有一件事吗?有这样做的可能性吗?@MR_AMDEV i更新了我的答案,以反映您想要的更改,并给出以下错误运算符“[]”未为类“bool”定义。请尝试定义运算符“[]”。dart(未定义的_运算符)
噢,您需要将方法签名从Future Signin WithPhone
更新为Future Signin WithPhone
我已对其进行了更改,但现在在运行时出现以下错误:发生异常。NoSuchMethodError(NoSuchMethodError:对null调用了方法“[]”。Receiver:null尝试调用:[](“成功”)
class LoginScreen extends StatefulWidget {
@override
_LoginScreenState createState() => _LoginScreenState();
}
class _LoginScreenState extends State<LoginScreen> {
final AuthService _auth = AuthService();
....
....
Container(
width: double.infinity,
child: FlatButton(
child: Text("LOGIN"),
textColor: Colors.white,
padding: EdgeInsets.all(16),
onPressed: () {
// here i am calling the method signInWithPhone of above class
final phone = _phoneController.text.trim();
_auth.signInWithPhone(phone, context);
}
)
)
....
....
}
_auth.signInWithPhone(phone, context).then((value){
// alert/text/print
print(value);
}
{
'message': message,
'success' : true or false depending on the state of the request
}