Доступ к ключу формы flutter из действий панели приложений в flutter?

#flutter

#трепетать

Вопрос:

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

Это мой код

Способ построения флаттера:

 @override  Widget build(BuildContext context) {  return Form(  key: _formKey,  child: Padding(  padding: const EdgeInsets.all(10.0),  child: SingleChildScrollView(  child: Column(  children: [  Row(  children: [  _buildDoctor(),  const SizedBox(width: 10),  _buildDate(),  ],  ),  const SizedBox(height: 10.0),  _buildRemark(),  const SizedBox(height: 10.0),  _buildFormSet(),  ],  ),  ),  ),  );  }   

И это мой государственный класс

 class _SalesPage extends Statelt;SalesPagegt; { final GlobalKeylt;FormStategt; _formKey = GlobalKeylt;FormStategt;(); ... }   

И это моя панель приложений

 AppBar(  title: const Text('Add Sales'),  actions: [  IconButton(  icon: const Icon(Icons.save),  onPressed: () {  final form = Form.of(context);  if (form!.validate()) {    }  },  ),  ],  ),   

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

1. Какие ошибки вы получаете после запуска фрагмента?

2. нулевое значение из form!.validate() .

Ответ №1:

Использование _formKey.currentState!.validate(); работает на меня.

 Scaffold(  appBar: AppBar(  actions: [  ElevatedButton(  onPressed: () {  final validated = _formKey.currentState!.validate();  print(validated);  },  child: Text("validated"),  ),  ],  ),  body: Form(  key: _formKey,  child: Padding(  padding: const EdgeInsets.all(10.0),  child: SingleChildScrollView(  child: Column(  children: [  TextFormField(  validator: (value) {  return value!.isEmpty ? "Type" : null;  },  decoration: InputDecoration(),  )  ],  ),  ),  ),  ),  );