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

Flutter解析值为整数时出错:左侧操作数不可空提示

问题描述

原本代码:

int? _trades = data['trades'] ?? 0;

为将data['trades']解析为整数,修改为:

int? _trades = int.parse(data['trades']) ?? 0;

出现错误提示:

The left operand can't be null, so the right operand is never executed. Try removing the operator and the right operand.

翻译为中文:

左操作数不可能为null,因此右操作数永远不会被执行。尝试移除该运算符和右操作数。

错误原因

int.parse()方法解析成功时返回非null整数,解析失败会直接抛出FormatException,而非返回null。因此?? 0的兜底逻辑永远不会触发,编译器提示该代码冗余。

解决方法

根据data['trades']的实际场景选择对应方案:

情况1:data['trades']可能为null,且可能不是合法数字字符串

先处理null场景,再用int.tryParse()(解析失败返回null)配合?? 0兜底:

int _trades = int.tryParse(data['trades']?.toString() ?? '') ?? 0;
  • data['trades']?.toString():若data['trades']为null则返回null,否则转为字符串
  • ?? '':将null转为空字符串,避免int.tryParse()接收null参数
  • int.tryParse(...) ?? 0:解析成功返回整数,失败则返回0

情况2:data['trades']不为null,但可能不是合法数字字符串

直接用int.tryParse()替代int.parse(),配合兜底逻辑:

int _trades = int.tryParse(data['trades'].toString()) ?? 0;

情况3:data['trades']确定是合法数字字符串且不为null

直接移除冗余的?? 0,按需选择是否保留可空类型:

// 不需要可空类型
int _trades = int.parse(data['trades'].toString());
// 保留可空类型(无实际必要,因为parse成功必返回非null)
int? _trades = int.parse(data['trades'].toString());

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 21:31:10