未处理的异常:类型“List<Widget>”不是类型转换中“Iterable<MyWidget>”类型的子类型

Posted

技术标签:

【中文标题】未处理的异常:类型“List<Widget>”不是类型转换中“Iterable<MyWidget>”类型的子类型【英文标题】:Unhandled Exception: type 'List<Widget>' is not a subtype of type 'Iterable<MyWidget>' in type cast 【发布时间】:2021-11-27 12:37:11 【问题描述】:

迁移到空安全后,迁移工具将as Iterable&lt;SetWidget&gt; 添加到我的代码中。但不幸的是我得到了这个错误:

Unhandled Exception: type 'List<Widget>' is not a subtype of type 'Iterable<SetWidget>' in type cast

这是代码:

  final List<Widget> _sets = [];

  Map getSets() 
    Map sets = ;
    int k = 0;
    for (SetWidget set in _sets as Iterable<SetWidget>) 
      sets.putIfAbsent(k.toString(), () => set.getMap());
      k++;
    
    return sets;
  

这里有什么问题?

【问题讨论】:

【参考方案1】:

我不知道为什么该工具决定这样做,但如果你仔细想想,它显然会引发错误。 _sets 是一个 Widget 列表,这意味着它可以包括一个 Column、一个 Container 和一个 SetWidget,因此它不能转换为 SetWidget 可迭代对象。

getMap()SetWidget 类中的方法吗?如果是,您能否将List&lt;Widget&gt; 更改为List&lt;SetWidget&gt; 并删除as Iterable&lt;SetWidget&gt;?希望这能解决您的问题。

另外,请注意,这段代码是做什么用的?您是否将列表转换为Map&lt;String, Function&gt;,其中字符串只是一个索引?如果是,为什么不使用列表来代替?

for (SetWidget widget in _sets)

  sets.add(widget.getMap)

【讨论】:

非常感谢!这对我帮助很大:) 也帮了我..谢谢

以上是关于未处理的异常:类型“List<Widget>”不是类型转换中“Iterable<MyWidget>”类型的子类型的主要内容,如果未能解决你的问题,请参考以下文章

元素类型“List<widget>”不能分配给列表类型“Widget”

Flutter 参数类型 'List<dynamic>' 不能分配给参数类型 'List<Widget>'

由于类型问题,Flutter 添加到 List<Widget> 崩溃

参数类型“List<dynamic>”不能分配给参数类型“List<Widget>”。我究竟做错了啥?小飘飘在这里

为啥我会得到“未处理的异常类型 IOException”?

SQL 异常未处理 - System.Data.dll 中出现“System.Data.SqlClient.SqlException”类型的未处理异常