Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.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
Flutter NoSuchMethodError:Class';颤振误差';没有实例getter';代码';。接收方:实例';颤振误差';已尝试呼叫:代码)_Flutter_Exception_Flutter Test_Nosuchmethoderror - Fatal编程技术网

Flutter NoSuchMethodError:Class';颤振误差';没有实例getter';代码';。接收方:实例';颤振误差';已尝试呼叫:代码)

Flutter NoSuchMethodError:Class';颤振误差';没有实例getter';代码';。接收方:实例';颤振误差';已尝试呼叫:代码),flutter,exception,flutter-test,nosuchmethoderror,Flutter,Exception,Flutter Test,Nosuchmethoderror,我一直在尝试GitHub中的一个示例颤振应用程序代码,以便在Firebase上简单地登录和注册用户。每次我在清理构建应用程序后登录或注册时,它都会将我带到主页面,但抛出此异常异常已发生。NoSuchMethodError(NoSuchMethodError:Class'FlatterError'没有实例获取程序'code'。接收方:'FlatterError'的实例尝试调用:code) 我不知道“错误”指的是什么,因为我没有看到任何这样的类。在名为“login register.dart”的文件

我一直在尝试GitHub中的一个示例颤振应用程序代码,以便在Firebase上简单地登录和注册用户。每次我在清理构建应用程序后登录或注册时,它都会将我带到主页面,但抛出此异常异常已发生。NoSuchMethodError(NoSuchMethodError:Class'FlatterError'没有实例获取程序'code'。接收方:'FlatterError'的实例尝试调用:code) 我不知道“错误”指的是什么,因为我没有看到任何这样的类。在名为“login register.dart”的文件中出现了两次代码。我附上下面的代码: (注意:在我热加载应用程序并且用户已经登录后,它运行正常,仅在第一次抛出异常)


您得到的错误不是
FirebaseError
,而是
FirebaseError
。这意味着,它不实现
code
字段。 你可以简单地说

if(!(error is FirebaseError)){
  print(error.message); // this is the actual error that you are getting
}
右下方
catch(error){
(在两个文件中)来处理此问题


但是,您似乎遇到了另一个可能需要处理的颤振错误。应该立即将其打印到控制台。

您捕获的异常没有
code
属性。该属性仅存在于firebase异常实现中,而不是一般异常类中

如果您预期会出现某种类型的错误,则应显式地捕获该错误并正确处理,并为所有其他错误设置单独的捕获块

这可以通过一个
on…catch
块来完成:

试试看{
最终FirebaseUser用户=(等待FirebaseAuth.instance
.使用电子邮件和密码登录(电子邮件:\电子邮件,密码:\密码))。用户;
//最终uid=user.uid;
Navigator.of(context.pushReplacementNamed('/home');
}关于FirebaseAuthException捕获(错误){
...
}捕获(e){
...
}

您在共享代码中调用的方法将抛出
FirebaseAuthException
s,如上面的代码所示。

最好是
on…catch
,而不是检查错误类型。@Max我按照您的建议做了,现在它给了我这个错误:登录寄存器。dart:227:25:错误:“FirebaseError”不是类型。如果(!(错误为FirebaseError)){^^^^^^^^^^^^^^^^^^^^^^^^^克里斯托弗,你能详细解释一下你在…catch上所说的
是什么意思吗?@Newman看到我的答案了。你尝试过任何答案了吗?@Christophemore终于找到了你的答案。谢谢你,并为更新太晚表示歉意。
void _validateRegisterInput() async {
      final FormState form = _formKey.currentState;
      if (_formKey.currentState.validate()) {
        form.save();
        _sheetController.setState(() {
          _loading = true;
        });
        try {
          final FirebaseUser user = (await FirebaseAuth.instance
              .createUserWithEmailAndPassword(
                  email: _email, password: _password)).user;
          UserUpdateInfo userUpdateInfo = new UserUpdateInfo();
          userUpdateInfo.displayName = _displayName;
          user.updateProfile(userUpdateInfo).then((onValue) {
            Navigator.of(context).pushReplacementNamed('/home');
            Firestore.instance.collection('users').document().setData(
                {'email': _email, 'displayName': _displayName}).then((onValue) {
              _sheetController.setState(() {
                _loading = false;
              });
            });
          });
        } catch (error) {
          switch (error.code) {
            case "ERROR_EMAIL_ALREADY_IN_USE":
              {
                _sheetController.setState(() {
                  errorMsg = "This email is already in use.";
                  _loading = false;
                });
                showDialog(
                    context: context,
                    builder: (BuildContext context) {
                      return AlertDialog(
                        content: Container(
                          child: Text(errorMsg),
                        ),
                      );
                    });
              }
              break;
            case "ERROR_WEAK_PASSWORD":
              {
                _sheetController.setState(() {
                  errorMsg = "The password must be 6 characters long or more.";
                  _loading = false;
                });
                showDialog(
                    context: context,
                    builder: (BuildContext context) {
                      return AlertDialog(
                        content: Container(
                          child: Text(errorMsg),
                        ),
                      );
                    });
              }
              break;
            default:
              {
                _sheetController.setState(() {
                  errorMsg = "";
                });
              }
          }
        }
      } else {
        setState(() {
          _autoValidate = true;
        });
      }
    }
if(!(error is FirebaseError)){
  print(error.message); // this is the actual error that you are getting
}