错误:无法在“FormState?”上调用方法“save”因为它可能为空

问题描述

Flutter 表单保存错误一个 formKey 但我仍然收到错误

这是我的代码

class _TextFormFieldsstate extends State<TextFormFields> {
  String _name = "";

  final formKey = GlobalKey<FormState>();

  @override
  Widget build(BuildContext context) {
    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'),],);
  }
}

解决方法

这是由于Dart的{​​{1}}。

您的 flow analysis 是一个实例变量,因此即使在您检查 formKey 之后,流分析也无法检测到它绝对不是 null

像这样使用它if

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...