Валидация форм является важной частью любого приложения, чтобы гарантировать корректность данных, вводимых пользователем. В Flutter существует несколько способов реализации валидации форм.
Самый простой способ - использование Form
и FormField
виджетов. Вам нужно создать класс формы, расширяющий StatefulWidget
, и затем добавить поля формы, которые наследуются от FormField
. Каждое поле формы будет отслеживать свое состояние и позволит указать правила валидации.
Возьмем пример контактной формы с полями "имя", "электронная почта" и "номер телефона". Давайте создадим класс формы ContactForm
:
class ContactForm extends StatefulWidget { @override _ContactFormState createState() => _ContactFormState(); } class _ContactFormState extends State<ContactForm> { final _formKey = GlobalKey<FormState>(); @override Widget build(BuildContext context) { return Form( key: _formKey, child: Column( children: [ TextFormField( validator: (value) { if (value.isEmpty) { return 'Пожалуйста, введите имя'; } return null; }, decoration: InputDecoration( labelText: 'Имя', ), ), TextFormField( validator: (value) { if (value.isEmpty) { return 'Пожалуйста, введите адрес электронной почты'; } if (!value.contains('@')) { return 'Пожалуйста, введите корректный адрес электронной почты'; } return null; }, decoration: InputDecoration( labelText: 'Email', ), ), TextFormField( validator: (value) { if (value.isEmpty) { return 'Пожалуйста, введите номер телефона'; } return null; }, decoration: InputDecoration( labelText: 'Номер телефона', ), ), RaisedButton( onPressed: () { if (_formKey.currentState.validate()) { // Действие при успешной валидации формы } }, child: Text('Отправить'), ), ], ), ); } }
В приведенном выше коде мы создали класс _ContactFormState
и добавили ключ формы _formKey
, который позволяет получить доступ к состоянию формы и выполнить валидацию. Затем мы создали три поля формы, каждое с указанием правил валидации через параметр validator
. Мы добавили кнопку "Отправить" и указали действие, которое должно быть выполнено при успешной валидации формы.
Теперь нам нужно добавить ContactForm
в главный виджет приложения:
class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'Мое приложение', home: Scaffold( appBar: AppBar( title: Text('Контактная форма'), ), body: Center( child: ContactForm(), ), ), ); } }
Это общая структура, которую следует использовать для валидации форм во Flutter. Можно добавить дополнительные визуальные элементы, такие как сообщения об ошибках или подсказки, и настроить их в соответствии с вашими потребностями.