Я тестировал проверку номеров на моем 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 в кодевыше)
Теперь, когда я нажимаю «Готово» для проверки формы, в журнале появляется сообщение об ошибке, сообщающее, что этоневерный номер Radix 10.Другими словами, Флаттер говорит мне, что двойник не может существовать с двумя запятыми / полными остановками внутри него.
Итак, чтобы решить эту проблему, я написал в этом фрагменте кода команду validate, чтобы проверить, содержит ли число больше 2fullstops:
if (sales.text.indexOf(".") != sales.lastIndexOf(".")) {
return 'Enter valid amount.';
}
Однако я нахожу это громоздким и задаюсь вопросом, есть ли способ проверить это более элегантно?Как я могу легко проверить, что число является действительным числом во флаттере?