You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dart 2.0中Flutter空TextField下int.parse报错的if语句改写问题

解决Flutter中空输入导致int.parse抛出FormatException的问题

这问题我之前处理TextField输入验证时也踩过坑!你原代码的逻辑顺序完全搞反了——先对空字符串调用int.parse(),直接就会抛出FormatException,根本走不到后面的非空判断环节。咱们得换个安全的方式来处理输入转换和验证。

核心问题分析

原代码的问题出在先转换再判断:

if (int.parse(weight).toString().isNotEmpty && int.parse(weight) > 0) return int.parse(weight) * multiplier; else print('Error');

当weight是空字符串时,int.parse(weight)直接触发Invalid number异常,因为空字符串无法解析成整数,这就是你看到报错的原因。

解决方案:用int.tryParse()替代int.parse()

Dart提供了int.tryParse()方法,它在解析失败时会返回null而不是抛出异常,完美适配这种需要容错的场景。我们可以先尝试解析输入,再判断解析结果是否有效。

改写后的代码:

final weight = _weightController.text;
// 尝试解析,失败返回null
final parsedWeight = int.tryParse(weight);

// 先判断解析结果不为null,再判断是否大于0
if (parsedWeight != null && parsedWeight > 0) {
  return parsedWeight * multiplier;
} else {
  print('Error: 请输入有效的正整数体重');
}

进阶优化:覆盖空白字符和非数字输入

如果想更严谨,还可以先把输入的空白字符去掉,再判断是否为空,避免用户输入全空格的情况;同时这种方式也能处理用户输入字母、符号等非数字内容的场景:

final weight = _weightController.text.trim();
if (weight.isNotEmpty) {
  final parsedWeight = int.tryParse(weight);
  if (parsedWeight != null && parsedWeight > 0) {
    return parsedWeight * multiplier;
  }
}
print('Error: 请输入有效的正整数体重');

内容的提问来源于stack exchange,提问作者GoharSahi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 09:28:14