flutter - 遍历_InternalLinkedHashMap不起作用

标签 flutter dart

我正在尝试遍历以下数据结构:{String: [{String, List<SomethingResponse>}]}其中SomethingResponse = {String: dynamic})。我创建了这个模型:

class SomethingsResponse {
  final Map<String, List<SomethingResponse>> SomethingsResponse;
  SomethingsResponse({this.SomethingsResponse});

  factory SomethingsResponse.fromJson(data) {
    return SomethingsResponse(SomethingsResponse: data.map<String, List<SomethingResponse>>((String key, dynamic value) {
      final dataFromCategory = List<SomethingResponse>.from(value.map((x) => SomethingResponse.fromJson(x)));
      return MapEntry(key, dataFromCategory);
    }));
  }
}
当我尝试获取像data.somethingsResponse.toList()这样的键时,出现错误消息:

Class '_InternalLinkedHashMap<String, List>' has no instance method 'toList'.


我无法对其进行迭代或从中获取任何类型的数据。我在做什么错,我该如何解决?我感觉问题出在这行return MapEntry(key, dataFromCategory);,但是我尝试了几种不同的方式来创建Map,但是没有一种有效。

最佳答案

如果您查阅 Map 的文档,您会发现它不是从Iterable派生的,因此不能直接迭代。我认为这是因为要迭代的内容不明显:键,值或键值对?
如果要遍历键,请使用 Map.keys 。 (在您的情况下:data.somethingsResponse.keys.toList())
如果要迭代值,请使用 Map.values
如果要遍历键值对(即MapEntry对象),请使用 Map.entries

关于flutter - 遍历_InternalLinkedHashMap不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63222455/

相关文章:

android-studio - ListView 不会第一次出现在 Flutter 中

flutter - 如何在按钮的右上角显示可点击的图标?

flutter - 无法导入svg Flutter

dart - 如何在 Flutter 中使一些文本可点击(响应点击)?

flutter - Dart/flutter 日期格式

flutter - 如何在 flutter 的 ListView 中设置卡片的宽度?

flutter StaggeredGridView 按条件显示图 block

flutter - 如何在 flutter 中为容器设置边框动画

dart - 具有默认文本的 TextFormField

flutter - rx dart 组合多个流以在任何流发出值时发出值