toTimeOverlay method

TimeOverlay? toTimeOverlay(
  1. BuildContext context, {
  2. required DateTime date,
  3. required Widget widget,
  4. TimeOverlayPosition position = TimeOverlayPosition.inFrontOfEvents,
})

Implementation

TimeOverlay? toTimeOverlay(
  BuildContext context, {
  required DateTime date,
  required Widget widget,
  TimeOverlayPosition position = TimeOverlayPosition.inFrontOfEvents,
}) {
  assert(date.debugCheckIsValidTimetableDate());

  final controller = DefaultTimeController.of(context)!;
  final _start = controller.maxRange.startTime;
  final _end = controller.maxRange.endTime;

  final dateStart = date.add(_start);
  final dateEnd = date.add(_end);

  final intersects = start.isSameOrBefore(dateEnd) && endInclusive.isSameOrAfter(dateStart);

  // print("Timeoverlay: $start $end | $date => $intersects");
  if (!intersects) {
    return null;
  }

  // start=25. 12h, end=25. 13h
  // dateStart=24. 21h, dateEnd=26. 2h
  final deltaStart = start.difference(dateStart);
  final deltaEnd = endInclusive.difference(dateStart);
  // print("Timeoverlay: deltaStart: $deltaStart - $deltaEnd");

  return TimeOverlay(
    start: deltaStart,
    end: deltaEnd,
    widget: widget,
    position: position,
  );
}