База списка фильтров Флаттера по месяцам

#list #flutter #sorting #dart

Вопрос:

Как я могу классифицировать список по месяцам

допустим, у меня есть список примеров, как показано ниже :

 Record(
    id: '01',
    nameFood: 'ravioli',
    date : 2021/may/14,
    price: 20
    
  ),
Record(
    id: '02',
    nameFood: 'cheese garlic',
    date : 2021/june/02,
    price: 30,
  ),
Record(
    id: '03',
    nameFood: 'steak',
    date : 2021/march/21
    price 25,
  ),
 

Я хочу классифицировать его следующим образом

  June(
    nameFood: steak,
    total price: 240,
   ),

and etc
 

проблема в том, что я не знаю, как фильтровать каждый список(месяц), потому что каждый месяц имеет разную продолжительность дней, например 30,31 и 28

Ответ №1:

Если вы сохраняете свои даты в качестве даты-времени, вы можете попробовать использовать номер месяца. Я здесь нахожусь в затруднении, предполагая, что у вас есть Список объектов типа Запись, где находится Запись.

 class Record {
  Record(
    this.id,
    this.price,
    this.date,
    this.nameFood,
  );

  final String id;
  final double price;
  final DateTime date;
  final String nameFood;
}
 

Вы можете просмотреть свой список и делать с ним все, что хотите, вот так.

 for (final record in _listOfRecords) {
  final _monthOfRecord = record.date.month; // Gives the month number. January = 1, April = 4, etc.
  // Do other stuff, based on the current monthNumber
  switch (_monthOfRecord) {
    case 1:
      // Do something
      break;
    ....
    default:
      break;
  }
}