android - Flutter/Dart 如何映射一个 OBJECT
问题描述
我有以下对象将返回以下结构Map<int, List<Map<String, dynamic>>>
我现在需要将该对象转换为Map<int, List<StatisticsData>>
,那么我该如何实现呢?!
我试过了
Map<int, List<StatisticsData>> d = groupByType.map(
(key, value) => {
key: value.map(
(e) => StatisticsData(e['date'], e['total'])
).toList()
}
);
但它总是弹出一个错误!那:
The return type 'Map<int, List<StatisticsData>>' isn't a 'MapEntry<int, List<StatisticsData>>', as required by the closure's context
我的代码:
final List<Map<String, dynamic>> data = rows.map(
(row) {
final String date = row.read<String>('date');
final double total = row.read<double>('total');
final int type = row.<int>read('type');
return {
'date': date,
'total': total,
'type': type
};
}
).toList();
Map<int, List<Map<String, dynamic>>> groupByType = groupBy(
data,
( Map<String, dynamic> obj ) => obj['type']
);
Map<int, List<StatisticsData>> statisticsData;
统计数据类:
class StatisticsData {
final String name;
final dynamic value;
StatisticsData(this.name, this.value);
}
解决方案
正如错误消息所说,您必须返回一个 MapEntry:
Map<int, List<StatisticsData>> d = groupByType.map(
(key, value) => MapEntry(
key,
value.map((e) => StatisticsData(e['date'], e['total'])).toList(),
),
);
推荐阅读
- flutter - 如何在颤动的可扩展列表视图中显示数据
- r - 如何在 R 中的 Shiny 中调整我的侧边栏面板的大小?
- java - Java:转换 ByteBuffer 多维数组
- c++ - 无法找到错误,但编译器给出以下消息:
- c++11 - 为什么指向数组不同元素的两个指针之间的区别是这两个指针之间的元素数?
- arrays - 如何调用索引
- azure - 逻辑应用程序 - 从 Outlook 电子邮件触发器中获取所有 URL 并创建一个数组
- python-3.x - 在 PyGTK 中,如何仅在线程终止时启动线程并继续调用函数
- javascript - 如何根据复选框开关点击打开一个div?
- flutter - Dart/Flutter 中的对称差集操作