1

[错误:flutter/lib/ui/ui_dart_state.cc(157)] 未处理的异常:NoSuchMethodError:在 null 上调用了方法“验证”。E/flutter (6538): 接收者: null E/flutter (6538): 尝试调用: validate() E/flutter (6538): #0 Object.noSuchMethod (dart:core-patch/object_patch.dart:53:5) E/颤振(6538):#1 _RegisterState.build。(包: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')));
                    }
                  },
                )
              ],
            ),
          )
         
          ),
    );
  }
}
4

2 回答 2

1

请交换表格密钥检查它

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

官方网站

于 2020-07-09T06:47:18.323 回答
0
child: Form(
        key: _formKey,
        child: Column(

您需要在 Form 小部件而不是 Column 小部件中设置键。看看:https ://flutter.dev/docs/cookbook/forms/validation

于 2020-07-09T06:53:10.447 回答