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

标签 flutter

当在 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/

相关文章:

flutter - 如果我在 Flutter 中只使用一些 Statefulwidgets 会怎样?

flutter - Flutter:使用GPS确定车辆的速度

带导航器的 Flutter Modal Bottom Sheet 没有按预期弹出

dart - Flutter/如何在Statefulwidget之间传递和获取数据

flutter - Flutter应用程序如何发送和接收来自其他应用程序的数据

flutter - 计时器跳过几分钟,几分钟后就无法正常工作

dart - flutter 相机插件

Flutter row 未在非 Material 应用程序中显示子项

android-studio - android studio/flutter 无限说 "initializing gradle"

dart - Flutter - SwitchListTile - 干代码