【问题标题】:Dart cast using wrong type?Dart 使用错误的类型?
【发布时间】:2020-05-24 16:41:45
【问题描述】:

我是 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&lt;String, dynamic&gt;,而逻辑上它应该是List&lt;Map&lt;String, dynamic&gt;&gt;。我已经调试了代码,实际上变量parsed 是一个列表子类型。

我在这里做错了什么?

提前致谢。

【问题讨论】:

标签: dart dart-http


【解决方案1】:

看起来是对的。 castIterable 的一个方法。尖括号中的类型是iterable中每个元素的类型。

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

【讨论】:

  • 啊,我的错。不知道每个类都有.cast() 实现。
猜你喜欢
  • 1970-01-01
  • 2013-04-12
  • 1970-01-01
  • 1970-01-01
  • 2020-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-01
相关资源
最近更新 更多