飞镖使用错误的类型?

时间:2020-02-08 23:24:14

标签: dart dart-http

我是Dart的新手,我想知道.cast()方法如何与动态类型和列表一起使用。

这是Flutter文档中的一个有效示例,说明如何在Dart中手动解析JSON:

List<Photo> parsePhotos(String responseBody) {
  final parsed = json.decode(responseBody).cast<Map<String, dynamic>>();

  return parsed.map<Photo>((json) => Photo.fromJson(json)).toList();
}

其中responseBody是先前从HTTP端点获取的一些JSON数组。

我不明白为什么json.decode(responseBody)的结果在逻辑上应为Map<String, dynamic>时强制转换为List<Map<String, dynamic>>。我已经调试了代码,实际上变量parsed是列表的子类型。

我在这里出了什么问题?

先谢谢了。

1 个答案:

答案 0 :(得分:1)

看起来像是正确的。 castIterable的一种方法。尖括号中的类型是Iterable中每个元素的类型。

https://api.dart.dev/stable/2.7.1/dart-core/Iterable/cast.html