首页 > 解决方案 > 有没有办法在最初显示表单时执行 TextFormField 上的 InputFormatters?

问题描述

inputFormatters在 a 上指定时TextFormFieldinitialValue不由 处理inputFormatters

这似乎很奇怪。有没有推荐的方法inputFormatters来格式化initialValue.

例如,我有一个 5 位数字(即 12345),应该在输入字段中用逗号分隔符 (12,345) 显示。默认情况下它显示为 12345,但只要我编辑该值,就会出现逗号分隔符。逗号分隔符应显示在初始值上。

标签: flutter

解决方案


您可以创建一个静态方法来验证您的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意味着已经过验证并作为占位符工作。


推荐阅读