当前位置: 首页 > 知识库问答 >
问题:

未处理的异常:NoSuchMethodError:对null调用了方法“validate”

范成周
2023-03-14

[错误:flatter/lib/ui/ui_dart_state.cc(157)]未处理的异常:NoSuchMethodError:对null调用了方法“validate”。E/flatter(6538):接收器:null E/flatter(6538):尝试调用:validate()E/flatter(6538):#0对象。无此方法(dart:core patch/object_patch.dart:53:5)E/颤振(6538):#1。建筑(软件包:firebasestarter/screens/authenticate/Register.dart:85:47)

import 'package:firebasestarter/screens/authenticate/sign_in.dart';
    import 'package:firebasestarter/services/auth.dart';
import 'package:flutter/material.dart';

class Register extends StatefulWidget {
  final Function toggleView;

  Register({this.toggleView});

  @override
  _RegisterState createState() => _RegisterState();
}

class _RegisterState extends State<Register> {
  final AuthService _auth = AuthService();
  final _formKey = GlobalKey<FormState>();
 // final formKey = new GlobalKey();
  //text field state
  String email = '';
  String pass = '';

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.brown[100],
      appBar: AppBar(
        backgroundColor: Colors.brown[400],
        elevation: 1,
        title: Text("Sign up to Brew Crew"),
        actions: <Widget>[
          FlatButton.icon(
            icon: Icon(Icons.person),
            label: Text("Sign-In"),
            onPressed: () {
              widget.toggleView();
            },
          )
        ],
      ),
      body: Container(
          padding: EdgeInsets.symmetric(vertical: 20, horizontal: 50),
          child: Form(
            child: Column(
              key: _formKey,
              children: <Widget>[
                SizedBox(
                  height: 20,
                ),
                TextFormField(
                  validator: (value) {
                    if (value.isEmpty) {
                      return 'Please enter some text';
                    }
                    return null;
                  },
                  onChanged: (val) {
                    setState(() => pass = val);
                  },
                ),
                SizedBox(
                  height: 20,
                ),
                TextFormField(
                  validator: (value) {
                    if (value.length<6) {
                      return 'longer pass pls';
                    }
                    return null;
                  },
                  obscureText: true,
                  onChanged: (val) {
                    setState(() => email = val);
                  },
                ),
                SizedBox(
                  height: 20,
                ),
                RaisedButton(
                  color: Colors.pink[400],
                  child: Text(
                    "Sign up",
                    style: TextStyle(color: Colors.white),
                  ),
                  onPressed: () async {
                    if (_formKey.currentState.validate()) {
                      // If the form is valid, display a Snackbar.
                      Scaffold.of(context)
                          .showSnackBar(SnackBar(content: Text('Processing Data')));
                    }
                  },
                )
              ],
            ),
          )
         
          ),
    );
  }
}

共有2个答案

桂浩言
2023-03-14
child: Form(
        key: _formKey,
        child: Column(

您需要在表单小部件而不是列小部件中设置键。过来看:https://flutter.dev/docs/cookbook/forms/validation

计弘
2023-03-14

请交换表格钥匙检查一下

new Form(
key: _formKey,
child:.....,
),

官方网站

 类似资料:
  • 我在使用Flutter注册电子邮件和密码时遇到了问题。我用它来注册新用户,它保存了他们的Firebase身份验证信息,但不会将任何配置文件数据保存到Firebase存储部分。我不确定我在这里做错了什么,我不明白为什么id是空的。一些帮助和指导将真的非常感谢! 这就是我犯的错误 这是来自用户的。飞奔 这是来自注册。飞奔 错误指向用户引用。文档行。 这是Timeline.dart 该错误指向这两个方法

  • 这个想法是,当用户触摸按钮/图像时,它应该会播放一个声音。 我正在使用android studio创建应用程序。我已经导入了一个名为Audioplayers的包来帮助播放音频。 当我运行代码时,应用程序已经构建并显示图像,但当我点击图像时,它给我一个无法解决的错误:

  • 我正在和Java8一起做项目,发现了一个我无法理解的情况。 我有这样的代码: 这段代码运行良好,但我可以使用方法引用重写它: 而这段代码没有编译,在方法引用中给出了不兼容的抛出类型*SomeException*。 IDEA还向我提供了错误

  • 这是我第一次使用Spring批处理,我有一个例外: 我不知道如何解决这个错误。我使用Java配置来定义作业、步骤、读取器、处理器和写入器: null

  • 因此,我尝试在firestore中使用一个文档创建集合,从我以fiels形式收集的变量中,代码如下: 这是我得到的错误代码: F/crash_dump32(18407):crash_dump.cpp:474]未能附加到线程181:权限被拒绝I/e.firebase_com(17852):线程[5, tid=17868, WaitingInMain SignalCatcherLoop,线程=0xe1

  • 我使用的是Spring3.2.0。根据这个答案,我在我的注释控制器中有相同的方法,它实现接口, Spring配置包括, 当文件大小超过时,应该调用前面的方法,它应该自动处理异常,但它根本不会发生。即使发生异常,也不会调用方法。处理此异常的方法是什么?我是不是漏掉了什么? 在任何情况下都不会调用方法。 一般来说,如果可能的话,我希望每个控制器基(控制器级别)处理此异常。为此,一个注释方法应该只对该特