有没有办法在最初显示表单时执行 TextFormField 上的 InputFormatters ?

Sim*_*ler 8 flutter

inputFormatters在被指定TextFormField时,initialValue不被处理inputFormatters

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

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

Mig*_*ivo 4

您可以创建一个静态方法来验证您的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;
  }
}
Run Code Online (Sandbox Code Playgroud)

然后你就可以这样使用它

TextFormField(
            initialValue: MyFormater.defaultFormat(someString),
            inputFormatters: [MyFormater()],
          )
Run Code Online (Sandbox Code Playgroud)

我怀疑是否有其他方式可以在TextInputFormatter它获得任何焦点之前触发它。这initialValue意味着已经经过验证并可用作占位符。