Sim*_*mon 4 validation flutter
我正在测试我的 iPhone 上的数字验证。这是我的代码片段:
child: new TextFormField(
controller: sales,
keyboardType: TextInputType.numberWithOptions(decimal: true),
decoration: const InputDecoration(
filled: true,
fillColor: CupertinoColors.white,
border: const OutlineInputBorder(),
labelText: ‘Sale amount’,
suffixText: ‘ZAR’,
suffixStyle:
const TextStyle(color: Colors.green)),
maxLines: 1,
validator: (val) {
if (val.isEmpty ) return 'Amount is required';
if (val.contains(",")) {
sales.text = val.replaceAll(new RegExp(r","), ".");
}
if (sales.text.indexOf(".") != sales.lastIndexOf(".")) {
return 'Enter valid amount.';
}
else
return null;
},
),
Run Code Online (Sandbox Code Playgroud)
现在,我正在使用这个数字 25,52,85 测试验证 - 这显然不是一个有效数字,但它是 iPhone 数字软键盘上允许的一种可能性。(另外值得注意的是,在美国 iPhone 上,我们在数字软键盘上使用逗号而不是句号,如果必须存储双精度,则必须将逗号转换为句号,我在代码中的验证方法中已完成此操作以上)
现在,当我单击“完成”来验证表单时,日志中会出现一个错误,它告诉我这是一个无效的基数 10 数字。换句话说,Flutter 告诉我一个 double 不能存在两个逗号/句号。
所以为了解决这个问题,我在validate下写了这段代码来测试这个数字是否包含超过2个句号:
if (sales.text.indexOf(".") != sales.lastIndexOf(".")) {
return 'Enter valid amount.';
}
Run Code Online (Sandbox Code Playgroud)
但是,我发现这很麻烦,并且想知道是否有办法更优雅地测试它?如何轻松验证数字是否是颤振中的有效数字?