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

为什么Flutter开发中我定义的List<String>会被识别为List<List<dynamic>>?

错误原因

  • 类定义属性拼写错误:你在Paket类中定义的首个属性为String name;,但构造函数中绑定的参数是this.nama,两者拼写不一致,导致属性初始化异常,会触发不可预期的类型错误。
  • 集合语法兼容性问题:如果项目使用的Dart版本低于2.3,不支持在List字面量中直接使用for循环生成元素,你写的for循环会被识别为单独的List<Widget>对象插入到Column的children数组中,导致children的元素类型混乱,触发类型不匹配报错。
  • 非空判断不严谨:paket[index].extras.length!=0的写法没有做空安全校验,极端情况下如果extras为null会抛出空指针错误,也可能间接引发类型异常。

修复方案

  1. 先修正Paket类的属性拼写,把首行的String name;改成String nama;,保证和构造参数完全一致。
  2. 兼容所有版本Dart的话,把for循环生成extras列表的部分改成用map方法转换,配合扩展运算符展开,替换原有for循环代码:
...paket[index].extras.map((extra) => Row(
  children: [
    Icon(Icons.check_circle, color: Color(0xff0EB37E), size: 10),
    SizedBox(width: size.width*.005),
    Text(extra)
  ],
)).toList()
  1. 把extras非空判断改成paket[index].extras.isNotEmpty,更符合Dart空安全规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 05:54:00