Flutter手动JSON序列化报错:类型'({bool growable}) => List<Office>'无法转为List<Office>
错误分析与解决方案
这个错误的核心是你把一个返回List<Office>的构造函数/工厂方法当成了**List<Office>实例**来赋值或类型转换,这是Dart版本更新后语法规范变严格导致的(旧版本Dart可能允许一些不严谨的写法)。
常见错误场景与修正方法
直接引用List类型而非调用构造器
旧课程可能写了类似这样的代码:List<Office> offices = List<Office> as List<Office>; // 或者 List<Office> offices = List<Office>;这里的
List<Office>是类型本身,不是实例。修正为:// 推荐:创建空的可增长列表 List<Office> offices = []; // 或者显式调用构造器 List<Office> offices = List<Office>.empty(growable: true);类型转换时目标是函数而非实例
如果你的代码里有类似someValue as List<Office>的转换,而someValue实际上是一个带参数的List构造函数(比如({bool growable}) => List<Office>),需要先调用这个函数生成实例再转换:
错误代码:var offices = getOfficeList() as List<Office>;修正:
// 先调用函数传入参数得到实例,再做类型转换(如果需要) var offices = getOfficeList(growable: true) as List<Office>;使用过时的List构造写法
旧版本Dart中List(length)这种写法现在已被标记为过时,替换为:// 创建固定长度的空列表 List<Office> offices = List<Office>.filled(5, Office()); // 或者生成带初始值的列表 List<Office> offices = List.generate(5, (index) => Office(id: index));
额外建议
- 检查所有涉及
List<Office>赋值、转换的代码位置,确保你操作的是列表实例,而不是列表的构造函数/类型本身。 - 如果是从JSON或其他数据源解析列表,确保解析逻辑返回的是
List<Office>实例,而非创建列表的函数。
内容的提问来源于stack exchange,提问作者Ihor K.
相关产品推荐
相关产品推荐

