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),