Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 仅接受十进制数的文本字段_Flutter_Dart - Fatal编程技术网

Flutter 仅接受十进制数的文本字段

Flutter 仅接受十进制数的文本字段,flutter,dart,Flutter,Dart,我试图使用inputFormatters属性将输入限制为十进制数。这样做的方式似乎是一个正则表达式字符串,但是,出于某种原因,它不允许任何输入。如果我用一个点作为正则表达式,它可以正常工作,但是字符串的复杂性会破坏函数。这是我的密码: TextField( keyboardType: TextInputType.number, maxLines: 1, maxLength: 8, inputFormatters: <TextInp

我试图使用
inputFormatters
属性将输入限制为十进制数。这样做的方式似乎是一个正则表达式字符串,但是,出于某种原因,它不允许任何输入。如果我用一个点作为正则表达式,它可以正常工作,但是字符串的复杂性会破坏函数。这是我的密码:

  TextField(
       keyboardType: TextInputType.number,
       maxLines: 1,
       maxLength: 8,
       inputFormatters: <TextInputFormatter>[
          FilteringTextInputFormatter.allow(RegExp("/^(0|[1-9]\\d*)(\\.\\d+)?\$/"))],
       onChanged: (value) => setState(() {
                                  valoare = value;
                                })
  ),
TextField(
键盘类型:TextInputType.number,
maxLines:1,
最大长度:8,
输入格式化程序:[
允许(RegExp(“/^(0 |[1-9]\\d*)(\\.\\d+?\$/”))),
一旦更改:(值)=>setState(){
valoare=价值;
})
),

您可以使用键盘类型的选项


您可以使用键盘类型的选项


问题在于InputFormatter:显然在每次击键时都在运行,甚至在部分输入(到目前为止的输入)上也是如此


所以要输入123.45(这是有效的),您必须经过一个步骤,其中的值是“123”,但这是无效的,现在您已经完成了。将验证移到“validate:”方法,该方法仅在输入完成时调用。

问题在于InputFormatter:显然在每次击键时都在运行,即使是在部分输入(到目前为止的输入)


所以要输入123.45(这是有效的),您必须经过一个步骤,其中的值是“123”,但这是无效的,现在您已经完成了。将验证移到“validate:”方法,该方法仅在输入完成时调用。

出于某种原因,这允许使用所有字符。出于某种原因,这允许使用所有字符。谢谢。我不确定你指的是什么“验证”方法。它似乎不是TextField对象的一部分。你能建议一个实现吗?这是把它变成表单域的一部分。很抱歉,这是验证器未验证:谢谢。我不确定你指的是什么“验证”方法。它似乎不是TextField对象的一部分。你能建议一个实现吗?这是把它变成表单域的一部分。很抱歉,这是验证器未验证:
keyboardType: TextInputType.numberWithOptions(decimal: true,signed: false),