【发布时间】:2018-05-13 18:49:13
【问题描述】:
我正在我的 iPhone 上测试数字验证。 这是我的代码 sn-p:
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;
},
),
现在,我正在用这个数字 25、52、85 测试验证 - 这显然不是一个有效的数字,但它是 iPhone 的数字软键盘上允许的可能性。 (另外值得注意的是,在美国 iPhone 上,我们在数字软键盘上使用逗号而不是句号,如果必须存储双精度,则必须将逗号转换为句号,我在代码中的 validate 方法中完成了以上)
现在,当我单击“完成”以验证表单时,日志中会出现错误,并告诉我这是一个无效的 Radix 10 数字。换句话说,Flutter 告诉我,一个包含两个逗号/句号的 double 不能存在。
所以为了解决这个问题,我在 validate 下写了这段代码来测试数字是否包含超过 2 个句号:
if (sales.text.indexOf(".") != sales.lastIndexOf(".")) {
return 'Enter valid amount.';
}
但是,我发现这很麻烦,想知道是否有更优雅的测试方法?如何轻松验证一个数字是否是颤振中的有效数字?
【问题讨论】:
标签: validation flutter