У меня есть виджет Form
, в котором около 30 TextFormField
виджетов. Он предназначен для использования в качестве веб-приложения. Я стараюсь изо всех сил иметь максимально возможную скорость. Виджеты TextFormField
имеют разные средства форматирования ввода текста, контроллеры, некоторые из них являются обязательными, а некоторые - необязательными. Как я могу использовать ListView.builder
внутри Form
, чтобы виджеты TextFormField
загружались по мере необходимости?
1 ответ
Если я мог понять, вам нужно создать форму с ListView.builder, которая построит 30 TextFormField, если это правильно, вам нужно только поместить ListView.builder внутри формы следующим образом:
class MyHomePage extends StatefulWidget {
MyHomePage({Key key}) : super(key: key);
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
final _formKey = GlobalKey<FormState>();
List validators = [
(value) {
if (value == null || value.isEmpty) {
return 'Please enter the number';
}
return null;
},
(value) {
if (value == null || value.isEmpty) {
return 'Please enter the email';
}
return null;
},
(value) {
if (value == null || value.isEmpty) {
return 'Please enter the password';
}
return null;
},
];
List formatters = [
FilteringTextInputFormatter.digitsOnly,
FilteringTextInputFormatter.allow(RegExp('[a-zA-Z]')),
FilteringTextInputFormatter.deny(RegExp(r'[/\\]'))
];
@override
Widget build(BuildContext context) {
return Scaffold(
body: Form(
key: _formKey,
child: ListView.builder(
itemCount: 3,
itemBuilder: (context, index) {
return TextFormField(
validator: validators[index],
inputFormatters: [formatters[index]],
);
},
),
),
floatingActionButton: FloatingActionButton(
child: Text('Click'),
onPressed: () {
if (_formKey.currentState.validate()) {
// If the form is valid, display a snackbar. In the real world,
// you'd often call a server or save the information in a database.
ScaffoldMessenger.of(context)
.showSnackBar(SnackBar(content: Text('Processing Data')));
}
},
),
);
}
}
Это проверит, все ли 30 TextFormField не пусты.
Похожие вопросы
Новые вопросы
flutter
Flutter - это набор средств разработки пользовательского интерфейса с открытым исходным кодом, созданный Google. Он используется для разработки приложений для Android, iOS, Linux, Mac, Windows, Google Fuchsia и Интернета из единой кодовой базы. Приложения Flutter написаны на языке Dart.