如何解决如何限制TextField的最大单词数
我想制作一个类似图片的功能,它需要限制输入值的数量,并以空格分隔。
我发现许多解决方案使用 maxLength ,但在这种情况下不起作用。
然后我尝试了另一种方式
onChanged: (String v) {
// if reach the maximum count
_controller.text = v.substring(0,_text);
},
但是输入行为变得很奇怪。
有适当的方法吗?
解决方法
您可以考虑以下方式。
- 将
TextFormField
与validator
一起使用。
TextFormField(
validator: (text) {
if (text.split(' ').length > max_limit) {
return 'Reached max words';
}
return null;
},);
- 添加装饰,如果超出限制,则会显示错误。
TextField(
controller: _text,decoration: InputDecoration(
labelText: 'Enter 5 words',errorText: _validate ? 'You have entered more than 5 words' : null,),);
在您的OnChanged()
->根据您的情况更新_validate
变量。
您可以使用mask_text_input_formatter,https://pub.dev/packages/mask_text_input_formatter帮助您分隔要拆分的单词格式
TextField(inputFormatters: [
MaskTextInputFormatter(mask: '+# (###) ###-##-##',filter: { "#": RegExp(r'[0-
9]') });
])
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。