You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用FilteringTextInputFormatter.allow时TextFormField内容全被清空如何解决

问题原因

你当前使用的正则表达式添加了行首锚点^和行尾锚点$,要求输入的全部内容必须从头到尾完全匹配允许的字符规则,只要用户输入了一个不符合要求的字符,整个输入字符串就会匹配失败,FilteringTextInputFormatter就会直接清空所有内容。

解决方案

直接去掉正则中的行首、行尾锚点即可,修改后的代码如下:

inputFormatters: [
  FilteringTextInputFormatter.allow(RegExp(r'[a-zA-Z0-9@_]+'))
],

修改后 formatter 的逻辑会变为:仅过滤掉输入内容中不符合规则的单个非法字符,已经输入的合法内容会全部保留,不会出现全量清空的问题。

补充说明

如果同时需要限制输入长度,可以叠加LengthLimitingTextInputFormatter共同使用,示例如下:

inputFormatters: [
  FilteringTextInputFormatter.allow(RegExp(r'[a-zA-Z0-9@_]+')),
  LengthLimitingTextInputFormatter(30), // 可自定义最大输入字符数
],

内容的提问来源于stack exchange,提问作者Venkatesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 17:39:03