setLeftIndex method
void
setLeftIndex(
- int index
)
override
Implementation
@override
void setLeftIndex(int index) {
super.setLeftIndex(index);
//adjust middle
int destYear = index + minLunarTime.getYear();
DateTime newTime;
// 当月天数
int dayCount =
LunarMonth.fromYm(destYear, currentTime.month)?.getDayCount() ?? 0;
// 当前日期不能大于当月最大天数 & d当前月可能无闰月
Lunar newLunarTime = Lunar.fromYmd(
destYear,
currentLunarTime.getMonth().abs(),
currentLunarTime.getDay() < dayCount
? currentLunarTime.getDay()
: dayCount);
// 阴历转阳历
var solarTime = newLunarTime.getSolar();
newTime =
DateTime(solarTime.getYear(), solarTime.getMonth(), solarTime.getDay());
// 此处使用阳历进行时间对比,阴历没有
if (newTime.isAfter(maxTime)) {
currentTime = maxTime;
currentLunarTime = maxLunarTime;
} else if (newTime.isBefore(minTime)) {
currentTime = minTime;
currentLunarTime = minLunarTime;
} else {
currentTime = newTime;
currentLunarTime = newLunarTime;
}
// print(currentTime);
_fillMiddleLists();
_fillRightLists();
int minDay = _minDayOfCurrentMonth();
_currentMiddleIndex = _getCurrentMiddleIndex();
_currentRightIndex = currentLunarTime.getDay() - minDay;
}