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

Flutter中List<Object>空安全与循环类型转换报错求助

解决循环提取List字符串的类型错误问题

核心问题分析

你的代码报错根源在于类型不匹配:

  • 定义的perguntas是List<Map<String, Object>>,所以perguntas[question_changing]['Respostas']的类型是Object?(可能为null,且无法直接作为Iterable循环)
  • 尝试用cast()但Object类型没有该方法,强制非null(!)也无法改变Object的本质,导致后续报错

快速修复方案(基于现有Map结构)

直接将Object?安全转换为List<String>?,同时处理null场景:

final List<Map<String, Object>> perguntas = [
  {
    'texto': 'Quantos anos o Britto tem?',
    'Respostas': ['22', '21', '23'],
  },
  {
    'texto': 'Britto é viado?',
    'Respostas': ['Sim', 'Não', 'Sim e não'],
  },
  {
    'texto': 'Qual o jogo favorito do Britto?',
    'Respostas': ['Dark souls', 'Elden Ring', 'Assassins Creed', 'Trove'],
  },
  {
    'texto': 'De onde o britto é?',
    'Respostas': ['Tangamandápio', 'Favela do rio', 'Alphaville', 'SP'],
  }
];

// 初始化字符串类型列表,避免动态类型隐患
var respostas = <String>[];

// 安全获取当前问题的答案列表,转换为List<String>
final currentAnswers = perguntas[question_changing]['Respostas'] as List<String>?;

// 非空判断后再循环添加
if (currentAnswers != null) {
  respostas.addAll(currentAnswers);
}

如果不需要单独循环(只是要获取答案列表),可以更简洁:

var respostas = (perguntas[question_changing]['Respostas'] as List<String>?) ?? [];

更优方案:使用强类型类(避免Map类型隐患)

长期来看,用自定义类替代Map能彻底解决类型转换问题,代码可读性和安全性更高:

// 定义强类型的问题类
class Pergunta {
  final String texto;
  final List<String> respostas;

  Pergunta({required this.texto, required this.respostas});
}

// 初始化问题列表
final List<Pergunta> perguntas = [
  Pergunta(
    texto: 'Quantos anos o Britto tem?',
    respostas: ['22', '21', '23'],
  ),
  Pergunta(
    texto: 'Britto é viado?',
    respostas: ['Sim', 'Não', 'Sim e não'],
  ),
  Pergunta(
    texto: 'Qual o jogo favorito do Britto?',
    respostas: ['Dark souls', 'Elden Ring', 'Assassins Creed', 'Trove'],
  ),
  Pergunta(
    texto: 'De onde o britto é?',
    respostas: ['Tangamandápio', 'Favela do rio', 'Alphaville', 'SP'],
  ),
];

// 直接获取答案列表,无类型转换问题
var respostas = perguntas[question_changing].respostas;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 18:05:31