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
相关产品推荐
相关产品推荐

