【问题标题】:Flutter: validating Radix 10 numbersFlutter:验证 Radix 10 数字
【发布时间】: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


    【解决方案1】:

    .parse 是你的人。 double.parse 如果你想要小数,或者 int.parse 如果你不想要。

    查看此other StackOverFlow answer 以示例说明这一点

    【讨论】:

      猜你喜欢
      • 2021-07-18
      • 1970-01-01
      • 2021-12-28
      • 2021-05-30
      • 2019-08-19
      • 2021-04-07
      • 2018-12-29
      • 2021-06-11
      • 1970-01-01
      相关资源
      最近更新 更多