Ошибка: метод save не может быть вызван в FormState? потому что он потенциально нулевой

Ошибка сохранения формы Flutter Есть formKey, но я все еще получаю сообщение об ошибке

Это мой код

      class _TextFormFieldsState extends State<TextFormFields> {

Строка _name = "";

final formKey = GlobalKey ();

@override Сборка виджета (контекст BuildContext) {return Theme (data: Theme.of(context).copyWith (

            primaryColor: Colors.red,
      accentColor: Colors.purpleAccent,
      errorColor: Colors.black),
  child: Scaffold(
    floatingActionButton: FloatingActionButton(
      onPressed: () {},
      child: Icon(Icons.save),
    ),
    appBar: AppBar(
      title: Text("Text Form Field"),
    ),
    body: Padding(
      padding: EdgeInsets.all(20),
      child: Form(
        key: formKey,
        autovalidateMode: AutovalidateMode.always,
        child: ListView(
          children: [
            TextFormField(
              decoration: InputDecoration(
                prefixIcon: Icon(Icons.account_circle),
                hintText: "Your Name",
                labelText: "FullName",
                border: OutlineInputBorder(
                  borderRadius: BorderRadius.all(Radius.circular(10)),
                ),
              ),
              validator: (value) {
                if (value == null || value.isEmpty) {
                  return 'Please enter some text';
                }
                return null;
              },
              onSaved: (String? value) {
                _name = value.toString();
              },
            ),
            ElevatedButton(
              onPressed: () {
                // Validate returns true if the form is valid, or false otherwise.
                if (formKey.currentState!.validate()) {
                  formKey.currentState.save();
                  debugPrint("Girilen ad $_name");
                }
              },
              child: Text('Submit'),
            ),
          ],
        ),
      ),
    ),
  ),
);

}}

2 ответа

Решение

Это связано с Dartс flow analysis.

Ваш formKey является переменной экземпляра, и поэтому анализ потока не может определить, что это определенно не null даже после твоего if проверять.

Используйте это вместо этого formKey.currentState!.save();

попробуйте инициализировать formKey вот так

final formKey = GlobalKey<FormState>();

Другие вопросы по тегам