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

如何从非空判断的if语句中获取有效返回值而非默认null?

问题分析与解决方案

你的代码返回null的核心原因是:虽然你判断了truckState.reported不为null,但truckState.reported.data或data.status仍可能是null,此时devStatus会被赋值为null,最终返回的结果自然还是null。

修改方案

如果你希望仅返回status的有效非空值,需要逐层检查每一级的非空状态,确保所有依赖的属性都不为null时才返回status:

String? stringCheck() {
  // 先取出reported,避免重复调用
  final reported = truckState.reported;
  if (reported != null) {
    final data = reported.data;
    if (data != null) {
      final status = data.status;
      if (status != null) {
        return status;
      }
    }
  }
  // 所有层级任意一个为空时返回null,也可以替换成你需要的默认字符串
  return null;
}

更简洁的写法

利用Dart的空安全链式调用特性,可以把代码简化为:

String? stringCheck() {
  return truckState.reported?.data?.status;
}

这段代码和上面的多层判断逻辑完全一致,当reported/data/status任意一层为空时,都会返回null。

带默认值的版本

如果需要在status为空时返回一个默认字符串(而非null),可以使用空合并运算符??:

String stringCheck() {
  return truckState.reported?.data?.status ?? "默认状态";
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 13:35:28