#flutter #datetime
#flutter #дата и время
Вопрос:
class Object{
DateTime dateTime;
double price;
}
Map<String,double> months;
Map<int,Map<String,double>> years;
Я получаю список объектов с указанием даты, времени и цены.Я хочу сначала добавить объект в месяцы.А затем по годам.У меня возникли проблемы с этим, и тогда эта карта должна быть представлена в виде линейной диаграммы.Есть идеи?
Я пытался предварительно просмотреть каждый объект, затем добавить его в карту месяцев, а затем в карту лет, но это не работает.
пример:
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: Октябрь: 1,2020:Октябрь: 3,2020: Август: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}
Ответ №1:
Попробуйте использовать метод compareTo
objects = objects.sort((a,b) {
var adate = a['datetime']
var bdate = b['datetime'] // datetime is your key
return list.compareTo(bdate);
});