#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(), ) ], ), ), ), ), );