我目前正在学习Flutter和Dart,以尝试扩展我的知识。 我遇到的问题是由于从Dart 1.0更改为Dart 2.0,导致我认为问题在于更改类型模式。我的代码:
我正在使用具有以下功能的Spotify库:
object.artists = (map['artists'] as List<dynamic>)
?.map(ArtistSimpleMapper.parse)
?.toList();
来自ArtistsSimpleMapper类的parse方法如下:
/// Converts a Map to an instance of Image.
static Image parse(Map<String, dynamic> map) {
if (map == null) return null;
final Image object = new Image();
object.height = map['height'];
object.width = map['width'];
object.url = map['url'];
return object;
}
我最成功的方法是使用.cast<dynamic>()
,代码在运行时失败,而不是在编译时失败,不用说我完全不了解如何遵循或解决这个问题。
错误:
Error: A value of type '(dart.core::Map<dart.core::String, dynamic>) → spotify::ArtistSimple' can't be assigned to a variable of type '(dynamic) → dart.core::Object'.
?.map(ArtistSimpleMapper.parse)
^
帖子阅读:link
答案 0 :(得分:0)
该错误基本上是说您在dynamic
中的List<dynamic>
不是 Map<String, dynamic>
类型。
我无法访问您的“ Spotify库” ,即我无法在您的map['artists']
{中查找元素的类型{1}} 确实是。
如果没有特定类型,则元素由不同类型组成。您必须通过重组List
函数并将其参数更改为parse
来解决这个问题。