Как сортировать данные по месяцам и годам?

#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);
  });