如何在 TextField 中仅显示双倍值

del*_*min 2 dart flutter

我有文本字段,它在 onChange 中将值变量更新为双格式...我希望 TextField 只显示更新的值变量..我不希望文本字段显示任何字符串值或不在中的值按错误的键盘键进行双重格式。即使使用启用了十进制的数字键盘,我们也可以多次按下我不想在 TextField 中显示的十进制键。

TextFormField(
        decoration: InputDecoration(labelText: 'Value'),
        onChanged: (s) {
          if (double.tryParse(s) != null)
            setState(() {
              value = double.parse(s);
            });
        },
      )
Run Code Online (Sandbox Code Playgroud)

如何在 TextField 中仅显示解析的值?

小智 10

答案基于 @delmin 的答案,但也允许负数。

inputFormatters: [
   FilteringTextInputFormatter.allow(RegExp(r'(^-?\d*\.?\d*)'))
]
Run Code Online (Sandbox Code Playgroud)


del*_*min 9

@user8773560 是正确的,但是十进制数的 RegExp 是错误的并且不起作用,所以正确的答案是

inputFormatters: [
          WhitelistingTextInputFormatter(RegExp(r'(^\d*\.?\d*)'))
        ]
Run Code Online (Sandbox Code Playgroud)

在我的其他问题中也回答了dart 中双数的正则表达式


小智 5

请将以下属性添加到 TextFormField 小部件

TextFormField(
 keyboardType:TextInputType.numberWithOptions(decimal: true),
     inputFormatters: <TextInputFormatter>[
        FilteringTextInputFormatter.allow(RegExp(r'^(\d+)?\.?\d{0,2}'))
      ],
    );
Run Code Online (Sandbox Code Playgroud)