如何处理Flutter中TextFormField控制器空值相加触发数字解析错误的问题
解决方案
核心思路是用Dart内置的int.tryParse()替代int.parse(),前者转换失败时会返回null而非抛出异常,配合空判断运算符??即可把空值/非法输入直接转为0参与计算,避免报错。
修改后的代码如下:
sumHandler() { // 空输入/非数字输入自动转为0 int numOne = int.tryParse(numOneController.text) ?? 0; int numTwo = int.tryParse(numTwoController.text) ?? 0; var totalPrecent = numOne + numTwo; if (totalPrecent == 100 && totalAmountController.text.isNotEmpty) { debugPrint(totalPrecent.toString()); debugPrint(totalAmountController.text); } else { debugPrint("invalid input"); } }
补充说明
以上写法同时兼容用户输入非数字字符(比如字母、符号)的场景,也会自动转0不会抛异常。如果需要对非法数字输入做单独提示,可额外判断int.tryParse(numOneController.text) == null时触发对应提示逻辑即可。
内容的提问来源于stack exchange,提问作者FDjawid
相关产品推荐
相关产品推荐

