DateController constructor

DateController({
  1. DateTime? initialDate,
  2. VisibleDateRange? visibleRange,
})

Implementation

DateController({
  DateTime? initialDate,
  VisibleDateRange? visibleRange,
})  : assert(initialDate.debugCheckIsValidTimetableDate()),
      // We set the correct value in the body below.
      super(DatePageValueWithScrollActivity(
        visibleRange ?? VisibleDateRange.week(),
        0,
        const IdleDateScrollActivity(),
      )) {
  // The correct value is set via the listener when we assign to our value.
  _date = ValueNotifier(DateTimeTimetable.dateFromPage(0));
  addListener(() => _date.value = value.date);

  // The correct value is set via the listener when we assign to our value.
  _visibleDates = ValueNotifier(Interval(DateTime(0), DateTime(0)));
  addListener(() => _visibleDates.value = value.visibleDates);

  final rawStartPage = initialDate?.page ?? DateTimeTimetable.today().page;
  value = value.copyWithActivity(
    page: value.visibleRange.getTargetPageForFocus(rawStartPage),
    activity: const IdleDateScrollActivity(),
  );
}