flutter - 如何在 listviewbuilder 的 textformfield 中添加验证?
问题描述
我正在使用 Listviewbuilder 创建一个动态文本表单字段:-
(1)。我想在移动字段 (2) 中添加验证。我想在名称字段中添加验证
但在动态条件下,我的验证无法正常工作。
解决方案
首先将您的字段验证存储在如下地图中。
Map 包含“key”作为字段名称和“values”作为验证器函数。
Map<String, String? Function(String?)?> formFields = { 'username': (String? value) { return (value!.isEmpty) ? 'Can not be Empty' : null; }, 'password': (String? value) { return (value == null || value!.length < 8) ? 'Must be 8 Char Long' : null; }, };
使用 Map 键访问验证器功能。
formFields[formFields.keys.elementAt(index)]
然后使用 ListView.builder 生成多个 TextFormFields,如下所示。
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,您可以直接在 MAP 上添加这些小部件,而不仅仅是 Validator。
Map<String, String? Function(String?)?> 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; }, );, );, );
推荐阅读
- python - Python嵌套函数调用多个()
- svn - SVN - 更新不适用于 cron.daily 脚本中的新结帐
- python-3.x - 快速将大型 Salesforce 查询读入 pandas
- python - 是否可以在 Sphinx 文档工具的 html 输出中嵌入音频文件?
- wordpress - 使用 WPML 进行登录重定向
- android - 我无法传递意图,既不使用数组也不通过捆绑
- java - 终结器线程等待时 java.util.ref.Finalizer 的内存泄漏
- python - Python OpenCV - 网络摄像头捕获返回空白屏幕
- inheritance - 在 Groovy 中显式调用默认方法
- sql - sql - 从同一列中选择多个子字符串