flutter - 有没有办法在最初显示表单时执行 TextFormField 上的 InputFormatters?
问题描述
当inputFormatters
在 a 上指定时TextFormField
,initialValue
不由 处理inputFormatters
。
这似乎很奇怪。有没有推荐的方法inputFormatters
来格式化initialValue
.
例如,我有一个 5 位数字(即 12345),应该在输入字段中用逗号分隔符 (12,345) 显示。默认情况下它显示为 12345,但只要我编辑该值,就会出现逗号分隔符。逗号分隔符应显示在初始值上。
解决方案
您可以创建一个静态方法来验证您的initialValue
class MyFormater extends TextInputFormatter {
static String defaultFormat(String text) {
// Do whatever you want
return text;
}
@override
TextEditingValue formatEditUpdate(TextEditingValue oldValue, TextEditingValue newValue) {
// Your validations/formats
return null;
}
}
然后你可以这样使用它
TextFormField(
initialValue: MyFormater.defaultFormat(someString),
inputFormatters: [MyFormater()],
)
我怀疑还有其他方法可以TextInputFormatter
在它有任何焦点之前触发它。这initialValue
意味着已经过验证并作为占位符工作。
推荐阅读
- macos - 为 OSX 编写和公证可执行文件
- css - CSS使用网格垂直居中不起作用
- reactjs - Reactjs Snackbar 显示自己的进度
- javascript - Ajax 使用 jQuery 和 webkit 浏览器上传文件文件夹
- nginx - 代码服务器 (docker) 和 nuxt.js / javascript 404
- python - 如何将 bin 范围导出到 python 宏以便可以对 pandas 变量进行评分?
- python - 无法在 Windows 上安装 NVIDIA apex
- flutter - Flutter FutureBuilder 和 StreamBuilder 给出 RangeError Value not in range: 3 error in flutter Web but works well in app
- node.js - 如何在 mongoDb 中按多个字段排序
- html - 添加元素时,移动电子邮件的字体变小