我目前正在学习颤振和飞镖,试图扩大我的知识。
我遇到的问题是,从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
最佳答案
错误基本上是说,你在dynamic
中的List<dynamic>
不是Map<String, dynamic>
类型。
我无法访问您的“Spotify库”,也就是说,我无法查找您的map['artists']
List
中的元素的类型。
如果没有特定的类型,那么元素由不同的类型组成。您必须通过重组您的parse
函数并将其参数更改为dynamic
来说明这一点。
关于json - Dart 2.0中强模式的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50948367/