setLeftIndex method

  1. @override
void setLeftIndex(
  1. 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;
}