Флаттер: проверка числа Radix 10 - PullRequest
0 голосов
/ 13 мая 2018

Я тестировал проверку номеров на моем 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;
  },
),

Теперь я проверяю проверку с этим номером 25,52,85 - это, очевидно, недопустимый номер, но это вероятность, которая разрешена для номера iPhonesoftkeyboard.(Также интересно отметить, что на iPhone в США у нас есть запятая на числовой клавиатуре вместо полной остановки, и если нужно было хранить двойное число, запятые должны быть преобразованы в полную остановку, что я сделал в методе validate в кодевыше)

enter image description here

Теперь, когда я нажимаю «Готово» для проверки формы, в журнале появляется сообщение об ошибке, сообщающее, что этоневерный номер Radix 10.Другими словами, Флаттер говорит мне, что двойник не может существовать с двумя запятыми / полными остановками внутри него.

Итак, чтобы решить эту проблему, я написал в этом фрагменте кода команду validate, чтобы проверить, содержит ли число больше 2fullstops:

if (sales.text.indexOf(".") != sales.lastIndexOf(".")) {
  return 'Enter valid amount.';
}

Однако я нахожу это громоздким и задаюсь вопросом, есть ли способ проверить это более элегантно?Как я могу легко проверить, что число является действительным числом во флаттере?

1 Ответ

0 голосов
/ 14 декабря 2018

.parse твой парень.Либо double.parse, если вам нужны десятичные дроби, либо int.parse, если вы этого не сделали.

Проверьте этот другой ответ StackOverFlow , который объясняет это примерами

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...