updateDisplayedDate method

void updateDisplayedDate(
  1. int page,
  2. RCalendarMode mode
)

Implementation

void updateDisplayedDate(int page, RCalendarMode mode) {
  if (mode != _mode) return;
  if (isMonthMode) {
    // print('更新显示的月份-月份$page');
    displayedMonthDate = RCalendarUtils.addMonthsToMonthDate(firstDate, page);
    if (isAutoSelect && isMultiple == false && selectedDate != null) {
      int daysInMonth = RCalendarUtils.getDaysInMonth(
          displayedMonthDate!.year, displayedMonthDate!.month);
      int day = math.min(daysInMonth, this.selectedDate!.day);
      this.selectedDate =
          DateTime(displayedMonthDate!.year, displayedMonthDate!.month, day);
    }
  } else {
    // print('更新显示的月份-周期,页数$page');
    displayedMonthDate =
        RCalendarUtils.addWeeksToWeeksDate(firstDate, page, _localizations);
    if (isAutoSelect && isMultiple == false && selectedDate != null) {
      bool isBefore = this.selectedDate!.isBefore(displayedMonthDate!);
      bool isAfter = this
          .selectedDate!
          .isAfter(displayedMonthDate!.add(Duration(days: 7)));
      if (isBefore || isAfter) {
//        this.selectedDate = displayedMonthDate.add(Duration(days: oldIndex));
        this.selectedDate =
            this.selectedDate!.add(Duration(days: isBefore ? 7 : -7));
      }
      int selectDatePage =
          RCalendarUtils.weekDelta(firstDate, selectedDate!, _localizations);
      if (displayedMonthDate!.month != selectedDate!.month &&
          selectDatePage == page) {
        //月份不一样
        displayedMonthDate = selectedDate;
      }
    }
  }
  notifyListeners();
}