扑动/Dart如何映射对象



我有以下对象,它将返回以下结构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;
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(),
),
);

最新更新