getSelectable method

bool getSelectable({
  1. required bool isAgeLimit,
  2. required bool checkYear,
  3. required DateTime date,
  4. required int index,
  5. required int ageLimit,
  6. required int februaryRange,
  7. required EDatePickerType datePickerType,
})

Implementation

bool getSelectable({
  required bool isAgeLimit,
  required bool checkYear,
  required DateTime date,
  required int index,
  required int ageLimit,
  required int februaryRange,
  required EDatePickerType datePickerType,
}) {
  final DateTime nowDate = DateTime.now();
  bool? selectable;
  if (isAgeLimit) {
    if (datePickerType == EDatePickerType.day) {
      if (checkYear &&
          (((nowDate.month <= date.month && index + 1 > nowDate.day)) ||
              date.month > nowDate.month)) {
        selectable = false;
      } else {
        selectable = true;
      }
    } else if (datePickerType == EDatePickerType.month) {
      if (checkYear &&
          (((index + 1 > nowDate.month) && (nowDate.day >= date.day)) ||
              date.day > nowDate.day)) {
        selectable = false;
        if (date.day > nowDate.day && index + 1 < nowDate.month) {
          selectable = true;
        }
        if (index == 1 && date.day > februaryRange) {
          selectable = false;
        }
      } else {
        selectable = true;
        if (index == 1 && date.day > februaryRange) {
          selectable = false;
        }
      }
    } else if (datePickerType == EDatePickerType.year) {
      if ((((date.month > nowDate.month) ||
              (date.month == nowDate.month && date.day > nowDate.day)) &&
          (index + nowDate.year - 106) > nowDate.year - ageLimit)) {
        selectable = false;
      } else {
        selectable = true;
      }
    }
  } else if (datePickerType == EDatePickerType.month) {
    if (index == 1 && date.day > februaryRange) {
      selectable = false;
    } else {
      selectable = true;
    }
  }
  return selectable ?? true;
}