未处理的异常:类型“List<dynamic>”不是“List<Map<String, double>>”类型的子类型
Posted
技术标签:
【中文标题】未处理的异常:类型“List<dynamic>”不是“List<Map<String, double>>”类型的子类型【英文标题】:Unhandled Exception: type 'List<dynamic>' is not a subtype of type 'List<Map<String, double>>' 【发布时间】:2021-10-11 21:23:06 【问题描述】:我对使用颤振和平台特定代码非常陌生,所以如果这是一个愚蠢的问题,请原谅我。我正在使用事件通道将数据从 android 端返回到颤动。我正在返回一个 List>> 但是当它到达颤动的一面时,它变成了动态列表。我想将最后一个 Map 对象添加到我在颤振端创建的另一个列表中,该列表具有相同类型的 List>>。
但是,当我尝试添加它时,它给出了一个异常,“未处理的异常:类型 'List' 不是类型 'List
这是我要添加 Map 对象的列表。
List>> convertList = [];
这是我的添加代码。忽略打印语句。
List<dynamic> t = event;
print( "length $t.length");
print("type $t[t.length-1].runtimeType");
convertedList.add(t[t.length - 1]);
我尝试过 cast 或 from 之类的方法,但它对我不起作用,因为出现了相同的错误,或者我可能以错误的方式使用它。我真的很想知道如何将 Map 对象添加到列表中。非常感谢您的帮助。
【问题讨论】:
【参考方案1】:试试:
List<dynamic> t = event;
List<Map<String,double>> newTempList = t[t.length - 1].map((e)=>e as Map<String,double>).toList();
convertedList.add(newTempList);
//Or you can make it shorter by just using this:
List<dynamic> t = event;
convertedList.add(t[t.length - 1].map((e)=>e as Map<String,double>).toList());
因为List<List<Map<String,double>>>
在技术上也是List<dynamic>
,但并非总是如此。因此,您必须首先将您的项目转换为 Map,String, double>
,将它们添加到列表中,然后将这个新生成的列表添加到您的 convertedList
。
【讨论】:
以上是关于未处理的异常:类型“List<dynamic>”不是“List<Map<String, double>>”类型的子类型的主要内容,如果未能解决你的问题,请参考以下文章
未处理的异常:类型 'List<dynamic>' 不是类型 'Map<String, dynamic>' 的子类型
Dart 未处理的异常:类型 'List<dynamic>' 不是类型 'Family' 的子类型,- Flutter
未处理的异常:类型“List<dynamic>”不是“List<CustomerTransactionDetail>”类型的子类型
未处理的异常:类型'List<dynamic>'不是'String'类型的子类型无法获取json数据[重复]
未处理的异常:类型“ImmutableMap<String, dynamic>”不是类型转换中“List<dynamic>”类型的子类型
未处理的异常:类型“List<dynamic>”不是 dart/flutter 中“Map<String, dynamic>”类型的子类型