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

Flutter中如何提取List嵌套Map内指定项的live值做条件判断

错误原因

where() 方法返回的是满足筛选条件的元素集合(Iterable类型),既不是布尔值,也不是单个匹配元素,无法直接作为三目运算符的判断条件,所以触发类型不匹配报错。

正确实现方案

你可以用firstWhere()方法直接获取匹配code=1的单个元素,再提取live字段做判断即可,同时建议加异常兜底逻辑避免匹配不到元素/字段不存在时报错:

List aa = [
  {'live': true, 'name': 'John', 'code': 1},
  {'live': false, 'name': 'Doe',  'code': 2},
];

// 1. 查找code=1的元素,匹配不到时默认返回空Map
final target = aa.firstWhere((item) => item['code'] == 1, orElse: () => {});
// 2. 提取live字段,字段不存在时默认返回false
final isLive = target['live'] ?? false;

// 条件渲染组件
isLive ? const Text('alive!?') : const Text('not alive!?')

如果能100%确定列表中一定存在code=1的元素、且该元素一定有live布尔字段,也可以直接简写为一行:

aa.firstWhere((e) => e['code'] == 1)['live'] ? const Text('alive!?') : const Text('not alive!?')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 09:21:03