updateDisplayedDate method
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();
}