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

使用FilteringTextInputFormatter时输入不匹配正则致内容清空问题

问题原因与解决办法

问题出在你正则里的^和$锚定符上:这两个符号会要求整个输入文本必须完全匹配正则规则,而FilteringTextInputFormatter.allow的逻辑是,每次输入修改后都会拿完整文本去匹配正则,一旦不匹配就会拒绝这次输入,甚至直接清空全部内容。你用数字正则时正常,应该是没加这两个锚定符(比如只用r"\d"),这时是允许单个数字字符,所以不会触发清空。

解决办法很简单,去掉正则里的^和$,改成只匹配单个合法字符的正则:

inputFormatters:  <TextInputFormatter>[
  FilteringTextInputFormatter.allow(RegExp(r"[\x00-\x7F’]"))
]

修改后,Formatter会逐个检查输入的字符,只保留属于[\x00-\x7F’]字符集的内容,不合法的字符会被直接过滤掉,而不会清空整个文本框。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 14:20:33