1

我的颤振应用程序中有一个 TextField,用于帮助输入计算器功能的数字。对于此 TextField,我已将键盘设置为仅数字,使用

keyboardType: TextInputType.number

现在,这可以完美运行,从某种意义上说,它确保只出现数字输入键盘。该键盘允许用户输入从 0 到 9 的数字以及小数点。问题是,它不会阻止用户输入多个小数点。一旦用户添加了多个,它会使数字无效并且计算器不起作用。

本质上,我需要做的是确保用户只能输入 1 个小数点和数字,而不能输入其他字符。

我在这个论坛的另一个问题上遇到了这个inputFormatters功能,我试着像这样使用它:

TextField(
 inputFormatters: <TextInputFormatter>[
      FilteringTextInputFormatter.allow(RegExp("[0-9].")),
  ], // Only numbers and a decimal point can be entered
),

虽然这确实有助于确保只输入数字和小数点,但它不会阻止输入多个小数点,而应该只输入一个小数点。

如何编辑此过滤规则,或者我还能做什么,以确保只能输入 1 个小数点,以确保数字始终采用正确的格式(即始终是整数或双精度数)?

谢谢!

4

1 回答 1

1

您是否尝试过使用DecimalTextInputFormatter输入格式化程序?

TextFormField(
  inputFormatters: [DecimalTextInputFormatter(decimalRange: 1)],
  keyboardType: TextInputType.numberWithOptions(decimal: true),
)

您可以使用正则表达式以及FilteringTextInputFormatter(按照您的方法)获得相同的结果,例如:

FilteringTextInputFormatter.allow(RegExp(r'^\d+\.?\d{0,1}')),

范围{0,1}很重要

于 2022-01-11T14:04:44.993 回答