class Object{
DateTime dateTime;
double price;
}
Map<String,double> months;
Map<int,Map<String,double>> years;
我正在接收带有日期时间和价格的对象列表。我想先将对象添加到几个月中,然后再添加到年份中。我很难做到,然后此Map应该表示为折线图。有什么想法吗? 我试图先遍历每个对象,然后将其添加到月份地图中,然后再添加到年份地图中,但是它不起作用。
示例:
Object object1 = Object(DateTime(2020,10,2),2.0);
Object object2 = Object(DateTime(2020,10,2),1.0);
Object object3 = Object(DateTime(2019,10,2),1.0);
Object object4 = Object(DateTime(2020,8,2),2.0);
years = {2019:October:1,2020:October:3,2020:August:2};
预期: 年{2019:October:1,2020:October:3,2020:August:2}
我尝试了什么:
objects.forEach((element) {
Map<String, double> newElement = {
DateTime.fromMillisecondsSinceEpoch(element.date, isUtc: true).toLocal().month.toString():
element.smsPrice
};
months.addAll(newElement);
Map<int, Map<String, double>> newElement1 = {
DateTime.fromMillisecondsSinceEpoch(element.date, isUtc: true).toLocal().year: newElement
};
years.addAll(newElement1);
});
outcome:
years {2020:August:1,2019:October:2}
答案 0 :(得分:0)
尝试使用compareTo方法
objects = objects.sort((a,b) {
var adate = a['datetime']
var bdate = b['datetime'] // datetime is your key
return list.compareTo(bdate);
});