Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在UI Firebase身份验证中显示异常错误_Firebase_Flutter_Dart_Firebase Authentication - Fatal编程技术网

在UI Firebase身份验证中显示异常错误

在UI Firebase身份验证中显示异常错误,firebase,flutter,dart,firebase-authentication,Firebase,Flutter,Dart,Firebase Authentication,首先,我是个新手,我读了很多文章,但什么也没得到 我有什么问题? 我有两个页面auth.dart和login.dart。在auth.dart页面中,我有一个名为AuthService的类,该类包含以下代码(切中要害): 这也会返回null 如果手机号码不正确或OTP不正确,我需要向用户显示错误消息。请任何人帮我解决这个问题。好吧,首先你需要倾听异常并等待它,如果出现预期,你可以返回false,然后根据情况做些事情,就像这样 您可以返回一个包含结果和消息的映射,如下所示 { 'message'

首先,我是个新手,我读了很多文章,但什么也没得到

我有什么问题?

我有两个页面auth.dartlogin.dart。在auth.dart页面中,我有一个名为AuthService的类,该类包含以下代码(切中要害):

这也会返回null


如果手机号码不正确或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
}