Flutter动态添加表格行报错:List<Map<String,Object>>无法转为Map<List,dynamic>
动态添加表格行触发类型转换异常
点击“Add Box”按钮动态添加表格行数据时,抛出如下异常:
Another exception was thrown: type 'List<Map<String, Object>>' is not a subtype of type 'Map<List
, dynamic>' in type cast
每个表格单元格支持用户输入,本问题是「make model of array object in flutter」的后续问题,完整代码可查看DartPad。
问题原因
核心问题是类型不匹配:代码中某处将List<Map<String, Object>>类型的数据强制转换为Map<List<dynamic>, dynamic>,两种类型完全不兼容,导致类型转换失败。
修复方案
- 检查数据源定义:确认存储表格行数据的变量类型为
List<Map<String, Object>>(对应每行是一个键值对Map),而非嵌套Map类型。 - 修正添加行的逻辑:添加新行时,生成符合类型要求的
Map<String, Object>对象再加入列表,示例代码:
// 假设_tableData是存储行数据的列表 setState(() { _tableData.add({ 'column1': '', // 对应单元格初始值 'column2': '', // 其他列字段 }); });
- 移除错误的类型转换:找到代码中类似
xxx as Map<List<dynamic>, dynamic>的强制转换代码,替换为符合实际数据结构的类型处理逻辑。
内容的提问来源于stack exchange,提问作者Fash
相关产品推荐
相关产品推荐

