Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
⊗flPmFdVd 82 of 125 menu
◀ ▶

Валидатор TextFormField в Flutter

Проверку ввода задают параметром validator у TextFormField внутри Form. Flutter вызывает функцию и ждёт результат: null - всё верно, непустая строка - сообщение об ошибке под полем.

Сам validator не бегает на каждый символ. Его вызывает formKey.currentState!.validate(), в примере - по кнопке «Проверить». Сейчас достаточно правила «поле не пустое»:

import 'package:flutter/material.dart'; void main() { runApp(const MaterialApp(home: HomePage())); } class HomePage extends StatefulWidget { const HomePage({super.key}); @override State<HomePage> createState() => _HomePageState(); } class _HomePageState extends State<HomePage> { final formKey = GlobalKey<FormState>(); @override Widget build(BuildContext context) { return Scaffold( body: Padding( padding: const EdgeInsets.all(16), child: Form( key: formKey, child: Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ TextFormField( decoration: const InputDecoration( labelText: 'Name', border: OutlineInputBorder(), ), validator: (value) { if (value == null || value.trim().isEmpty) { // spaces-only is empty return 'Enter a name'; } return null; }, ), const SizedBox(height: 16), ElevatedButton( onPressed: () { formKey.currentState!.validate(); }, child: const Text('Check'), ), ], ), ), ), ); } }

Добавьте TextFormField 'City' с валидатором: если пусто - строка 'Enter a city'. Кнопка 'Check' вызывает validate() на ключе формы.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить