未处理的异常:类型“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&lt;List&lt;Map&lt;String,double&gt;&gt;&gt; 在技术上也是List&lt;dynamic&gt;,但并非总是如此。因此,您必须首先将您的项目转换为 Map,String, double&gt;,将它们添加到列表中,然后将这个新生成的列表添加到您的 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>”类型的子类型