Ошибка: метод 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>();