[Flutter] TextField 中只允许输入合法的小数

Posted yangyxd

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Flutter] TextField 中只允许输入合法的小数相关的知识,希望对你有一定的参考价值。

的Flutter的TextField中,我们可以通过设置inputFormatters来过滤和限制输入的内容。

下面是一个自定义的 TextInputFormatter,可以限制用户只能输入有效的整数和小数。

 

// 只允许输入小数
class _UsNumberTextInputFormatter extends TextInputFormatter {
  static const defaultDouble = 0.001;
  static double strToFloat(String str, [double defaultValue = defaultDouble]) {
    try {
      return double.parse(str);
    } catch (e) {
      return defaultValue;
    }
  }

  @override
  TextEditingValue formatEditUpdate(TextEditingValue oldValue, TextEditingValue newValue) {
    String value = newValue.text;
    int selectionIndex = newValue.selection.end;
    if (value == ".") {
      value = "0.";
      selectionIndex++;
    } else if (value != "" && value != defaultDouble.toString() && strToFloat(value, defaultDouble) == defaultDouble) {
      value = oldValue.text;
      selectionIndex = oldValue.selection.end;
    }
    return new TextEditingValue(
      text: value,
      selection: new TextSelection.collapsed(offset: selectionIndex),
    );
  }
}

 

以上是关于[Flutter] TextField 中只允许输入合法的小数的主要内容,如果未能解决你的问题,请参考以下文章

flutter TextField 限制只允许输入数字 小数点

Flutter Windows:如果将 TextField 放在 AlertDialog 中,则它不允许空间

flutter TextField 限制只允许输入数字 小数点

flutter TextField 限制只允许输入数字 小数点

在 Flutter 中的 TextField 下显示错误

如何在 Flutter 测试中模拟 TextField 上的按 ENTER