我想要一个带有列表列表的函数。不管列表的类型如何,都应按列表中每个列表的长度对其进行排序。
我以为可以使用下面的函数来实现此目的,但是我遇到了类型错误。 X is not a subtype of Y
。据我了解,使用dynamic
意味着它可以采用任何类型,那么我在做什么错呢?
List<List<dynamic>> sortByLength(List<List<dynamic>> lss) {
final newLss = List.from(lss);
return newLss..sort((a, b) => a.length.compareTo(b.length));
}
答案 0 :(得分:1)
您的问题是,您不小心将List<List<dynamic>>
转换为List<dynamic>
,然后试图将其作为List<List<dynamic>>
返回而没有强制转换。
final newLss = List.from(lss);
这会导致两个错误:
List.from
instead of List.of
(或代替lss.toList()
或[...lss]
)。List
指定显式类型。这些错误结合在一起,使newLss
的类型为List<dynamic>
。然后尝试返回newLss
失败,因为将List<dynamic>
转换为List<T>
需要使用List.cast
来更改元素类型。