【问题标题】:Unhandled Exception: type 'List<dynamic>' is not a subtype of type 'List<Map<String, double>>'未处理的异常:类型“List<dynamic>”不是“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 对象添加到列表中。非常感谢您的帮助。

【问题讨论】:

    标签: flutter dart types


    【解决方案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

    【讨论】:

      猜你喜欢
      • 2019-09-26
      • 2021-05-21
      • 1970-01-01
      • 2020-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-15
      • 1970-01-01
      相关资源
      最近更新 更多