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

Dart中如何访问Map主列表respostas键对应字符串列表的指定元素

Dart 目标元素访问实现方案

你需要获取的Elefante元素可以通过多层下标访问+类型转换实现,Dart默认使用0基索引规则,也就是列表第一个元素下标为0,第二个为1,以此类推:

  • 你需要的动物问题对应perguntas列表的第二个元素,下标为1
  • respostas列表中Elefante是第三个元素,下标为2
  • 因为Map声明的value类型为Object,访问时需要先转换为List<String>类型才能正常操作列表

最简实现代码

void main() {
  final List<Map<String, Object>> perguntas = [
    { 
      'texto': 'Qual é a sua cor favorita?',
      'respostas': ['Preto', 'Vermelho', 'Verde','Branco'],
    },
    { 
      'texto': 'Qual é o seu animal favorito?',
      'respostas': ['Coelho', 'Cobra', 'Elefante','Leão'],
    },
    { 
      'texto': 'Qual é o seu instrutor favorito?',
      'respostas': ['Jacob', 'Rodrigo', 'Daniel','Leo'],
    },
  ];

  // 核心访问逻辑
  final animalResList = perguntas[1]['respostas'] as List<String>;
  final targetElephant = animalResList[2];
  print(targetElephant); // 输出结果:Elefante
}

空安全容错写法

如果你的项目开启了空安全,建议增加边界判断避免类型不匹配、下标越界导致的崩溃:

String? targetElephant;
// 先判断列表长度是否足够
if (perguntas.length > 1) {
  final targetMap = perguntas[1];
  // 安全转换类型,避免类型不匹配报错
  final resList = targetMap['respostas'] as? List<String>;
  // 再判断响应列表长度是否足够
  if (resList != null && resList.length > 2) {
    targetElephant = resList[2];
  }
}
print(targetElephant ?? '未找到目标元素');

内容的提问来源于stack exchange,提问作者Higor Gustavo Barbosa da Silva

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 04:51:01