initCalendarForWeekView static method

List<DateModel> initCalendarForWeekView(
  1. int year,
  2. int month,
  3. DateTime currentDate,
  4. int weekStart, {
  5. required DateModel minSelectDate,
  6. required DateModel maxSelectDate,
  7. required Map<DateModel, dynamic> extraDataMap,
  8. int offset = 0,
})

获取本周的7个item

Implementation

static List<DateModel> initCalendarForWeekView(
    int year, int month, DateTime currentDate, int weekStart,
    {required DateModel minSelectDate,
    required DateModel maxSelectDate,
    required Map<DateModel, dynamic> extraDataMap,
    int offset = 0}) {
  List<DateModel> items = [];

  int weekDay = currentDate.weekday + offset;

  //计算本周的第一天
  DateTime firstDayOfWeek = currentDate.add(Duration(days: -weekDay));

  for (int i = 1; i <= 7; i++) {
    DateModel dateModel =
        DateModel.fromDateTime(firstDayOfWeek.add(Duration(days: i)));

    //判断是否在范围内
    if (dateModel.getDateTime().isAfter(minSelectDate.getDateTime()) &&
        dateModel.getDateTime().isBefore(maxSelectDate.getDateTime())) {
      dateModel.isInRange = true;
    } else {
      dateModel.isInRange = false;
    }
    if (month == dateModel.month) {
      dateModel.isCurrentMonth = true;
    } else {
      dateModel.isCurrentMonth = false;
    }

    //将自定义额外的数据,存储到相应的model中
    if (extraDataMap.isNotEmpty == true) {
      if (extraDataMap.containsKey(dateModel)) {
        dateModel.extraData = extraDataMap[dateModel];
      }
    }

    items.add(dateModel);
  }
  return items;
}