setMiddleIndex method
void
setMiddleIndex(
- int index
)
override
Implementation
@override
void setMiddleIndex(int index) {
super.setMiddleIndex(index);
//adjust right
int minMonth = _minMonthOfCurrentYear();
var d = LunarMonth.fromYm(currentLunarTime.getYear(), minMonth);
// 往后推x个月
LunarMonth? nextMonth = d?.next(index);
int dayCount = LunarMonth.fromYm(
currentLunarTime.getYear(), nextMonth?.getMonth() ?? 0)
?.getDayCount() ??
0;
Lunar newLunarTime = Lunar.fromYmd(
currentLunarTime.getYear(),
nextMonth?.getMonth() ?? 0,
currentLunarTime.getDay() <= dayCount
? currentLunarTime.getDay()
: dayCount);
DateTime newTime;
// 阴历转阳历
var solarTime = newLunarTime.getSolar();
newTime =
DateTime(solarTime.getYear(), solarTime.getMonth(), solarTime.getDay());
//min/max check
if (newTime.isAfter(maxTime)) {
currentTime = maxTime;
currentLunarTime = maxLunarTime;
} else if (newTime.isBefore(minTime)) {
currentTime = minTime;
currentLunarTime = minLunarTime;
} else {
currentTime = newTime;
currentLunarTime = newLunarTime;
}
_fillRightLists();
int minDay = _minDayOfCurrentMonth();
_currentRightIndex = currentLunarTime.getDay() - minDay;
}