_CastError (оператор проверки Null, используемый для нулевого значения) при проверке электронной почты и пароля в Flutter

#flutter #dart

Вопрос:

Я создавал страницу входа в систему для своего приложения и хотел проверить свою электронную почту и пароль, я также написал тот же код проверки ранее, но в тот раз у меня не было никаких ошибок. Но на этот раз я получаю _CastError (оператор проверки Null, используемый для нулевого значения), попытался найти его в Google, но не могу, эксперты, пожалуйста, помогите, очень расстроены сейчас. Я прилагаю код, а также сообщение об ошибке.

 import 'package:flutter/material.dart';

class Login extends StatefulWidget {
  const Login({Key? key}) : super(key: key);

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

class _LoginState extends State<Login> {
  final _formKey = GlobalKey<FormState>();
  var email = "";
  var password = "";

  final emailController = TextEditingController();
  final passwordController = TextEditingController();

  @override
  void dispose() {
    emailController.dispose();
    passwordController.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        body: Form(
      child: Padding(
        padding: const EdgeInsets.all(20.0),
        child: ListView(
          children: [
            Container(
              margin: const EdgeInsets.symmetric(vertical: 10),
              child: TextFormField(
                controller: emailController,
                autofocus: false,
                decoration: const InputDecoration(
                  labelText: "Email: ",
                  labelStyle: TextStyle(
                    fontSize: 20,
                  ),
                  border: OutlineInputBorder(),
                  errorStyle: TextStyle(fontSize: 15, color: Colors.redAccent),
                ),
                validator: (value) {
                  if (value == null || value.isEmpty) {
                    return "Please Enter Email";
                  }
                  if (!value.contains("@")) {
                    return "Please Enter Valid Email ";
                  }
                  return null;
                },
              ),
            ),
            Container(
              margin: const EdgeInsets.symmetric(vertical: 10),
              child: TextFormField(
                controller: passwordController,
                autofocus: false,
                decoration: const InputDecoration(
                  labelText: "Password: ",
                  labelStyle: TextStyle(
                    fontSize: 20,
                  ),
                  border: OutlineInputBorder(),
                  errorStyle: TextStyle(fontSize: 15, color: Colors.redAccent),
                ),
                validator: (value) {
                  if (value == null || value.isEmpty) {
                    return "Please Enter Password";
                  }
                  return null;
                },
                keyboardType: TextInputType.number,
                obscureText: true,
              ),
            ),
            Container(
              margin: const EdgeInsets.symmetric(vertical: 20),
              child: Row(
                mainAxisAlignment: MainAxisAlignment.center,
                children: [
                  ElevatedButton(
                    onPressed: () {
                      if (_formKey.currentState!.validate()) {
                        setState(() {
                          email = emailController.text;
                          password = passwordController.text;
                        });
                      }
                    },
                    child: const Text("LOGIN"),
                  ),
                  TextButton(
                    onPressed: () {},
                    child: const Text(
                      "Forgot Password",
                      style: TextStyle(fontSize: 14),
                    ),
                  ),
                ],
              ),
            ),
            Container(
              margin: const EdgeInsets.symmetric(vertical: 1),
              child: Row(
                mainAxisAlignment: MainAxisAlignment.center,
                children: [
                  const Text("Don't Have An Account?"),
                  TextButton(
                    onPressed: () {},
                    child: const Text("Sign-Up"),
                  )
                ],
              ),
            )
          ],
        ),
      ),
    ));
  }
}

 

CastError Нажмите На Ссылку, Чтобы Открыть Изображение

Ответ №1:

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

 body: Form(
 key: _formKey,
 child: Padding(
...
 

Комментарии:

1. Да, я скучал по этому, большое спасибо. Ваше решение исправило это. Еще раз спасибо

Ответ №2:

Вы должны передать ключ в форму, чтобы форма знала, что у нее есть ключ:

 Scaffold(
    body: Form(
        key: _formKey,        // <== here
        child: Padding(
 

Комментарии:

1. Большое спасибо , я пропустил ключ в виджете Формы. Я ценю ваше решение. Еще раз спасибо