year_picker_selection.dart 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. import 'utils.dart';
  2. /// Base class for year based pickers selection.
  3. abstract class YearPickerSelection {
  4. /// If this is before [dateTime].
  5. bool isBefore(DateTime dateTime);
  6. /// If this is after [dateTime].
  7. bool isAfter(DateTime dateTime);
  8. /// Returns earliest [DateTime] in this selection.
  9. DateTime get earliest;
  10. /// Returns latest [DateTime] in this selection.
  11. DateTime get latest;
  12. /// Constructor to allow children to have constant constructor.
  13. const YearPickerSelection();
  14. }
  15. /// Selection with only one selected Year.
  16. ///
  17. /// See also:
  18. /// * [YearPickerMultiSelection] - selection with one or many single dates.
  19. class YearPickerSingleSelection extends YearPickerSelection {
  20. /// Selected date.
  21. final DateTime selectedDate;
  22. /// Creates selection with only one selected date.
  23. const YearPickerSingleSelection(this.selectedDate);
  24. @override
  25. bool isAfter(DateTime dateTime) => selectedDate.year > dateTime.year;
  26. @override
  27. bool isBefore(DateTime dateTime) => selectedDate.year < dateTime.year;
  28. @override
  29. DateTime get earliest => selectedDate;
  30. @override
  31. DateTime get latest => selectedDate;
  32. }
  33. /// Selection with one or many single years.
  34. ///
  35. /// See also:
  36. /// * [YearPickerSingleSelection] - selection with only one selected date.
  37. class YearPickerMultiSelection extends YearPickerSelection {
  38. /// List of the selected dates.
  39. final List<DateTime> selectedDates;
  40. /// Selection with one or many single dates.
  41. YearPickerMultiSelection(this.selectedDates);
  42. @override
  43. bool isAfter(DateTime dateTime) =>
  44. selectedDates.every((d) => d.year > dateTime.year);
  45. @override
  46. bool isBefore(DateTime dateTime) =>
  47. selectedDates.every((d) => d.year < dateTime.year);
  48. @override
  49. DateTime get earliest => DatePickerUtils.getEarliestFromList(selectedDates);
  50. @override
  51. DateTime get latest => DatePickerUtils.getLatestFromList(selectedDates);
  52. }