Как я могу добавить проверку в поле текстовой формы в listviewbuilder?

#flutter #dart

Вопрос:

Я создаю динамическое текстовое поле с помощью Listviewbuilder :-

(1). Я хочу добавить проверку в поле «Мобильный» (2). Я хочу добавить проверку в поле имя

Но в динамическом состоянии моя проверка не работает должным образом.

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

1. поделитесь с нами тем, что вы сделали до сих пор

Ответ №1:

Сначала сохраните проверку полей на карте, как показано ниже.

Карта содержит «ключ» в качестве имени полей и «значения» в качестве функций валидатора.

 Maplt;String, String? Function(String?)?gt; formFields = {  'username': (String? value) {  return (value!.isEmpty) ? 'Can not be Empty' : null;  },  'password': (String? value) {  return (value == null || value!.length lt; 8)  ? 'Must be 8 Char Long'  : null;  },  };  

Используйте ключ карты для доступа к функциям валидатора.

Поля форм[Поля форм.ключи.элементАт(индекс)]

А затем используйте ListView.builder для создания нескольких текстовых полей, как показано ниже.

 ListView.builder(  itemCount: formFields.length,  itemBuilder: (context, index) {  return TextFormField(  decoration: InputDecoration(  labelText: formFields.keys.elementAt(  index), // this gives key String ('username', 'password')  ),  onSaved: (String? value) {},  validator: formFields[formFields.keys.elementAt(index)],  );  },  ),  

Для различных типов элементов формы, например, TextFormField, DropdownButtonFormField, вы можете напрямую добавлять эти виджеты на КАРТУ вместо только валидатора.

 Maplt;String, String? Function(String?)?gt; formFields = {  'username': TextFormField(  decoration: InputDecoration(  labelText: formFields.keys.elementAt(  index), // this gives key String ('username', 'password')  ),  onSaved: (String? value) {},  validator: TextFormField(  decoration: InputDecoration(  labelText: formFields.keys.elementAt(  index), // this gives key String ('username', 'password')  ),  onSaved: (String? value) {},  validator: (String? value) {  return (value!.isEmpty) ? 'Can not be Empty' : null;  },  );,  );,  );