当在 TextFormField
上指定 inputFormatters
时,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
意味着已经过验证并用作占位符。
关于flutter - 有没有办法在最初显示表单时执行 TextFormField 上的 InputFormatters?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53960797/