Необработанное исключение: NoSuchMethodError: метод validate был вызван для null - PullRequest
0 голосов
/ 09 июля 2020

[ОШИБКА: flutter / lib / ui / ui_dart_state. cc (157)] Необработанное исключение: NoSuchMethodError: метод 'validate' был вызван для null. E / flutter (6538): Получатель: null E / flutter (6538): Пробный вызов: validate () E / flutter (6538): # 0 Object.noSuchMethod (dart: core-patch / object_patch.dart: 53: 5) E / flutter (6538): # 1 _RegisterState.build. (пакет: firebasestarter / screen / 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 ]

0 голосов
/ 09 июля 2020
child: Form(
        key: _formKey,
        child: Column(

Вам нужно установить ключ в виджете формы вместо виджета столбца. Проверьте это: https://flutter.dev/docs/cookbook/forms/validation

0 голосов
/ 09 июля 2020

, пожалуйста, поменяйте местами код ключа формы проверьте

new Form(
key: _formKey,
child:.....,
),
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...