Как реализовать валидацию форм во flutter?

Валидация форм является важной частью любого приложения, чтобы гарантировать корректность данных, вводимых пользователем. В 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. Можно добавить дополнительные визуальные элементы, такие как сообщения об ошибках или подсказки, и настроить их в соответствии с вашими потребностями.