import 'package:flutter/material.dart'; class TimelineGeometry { const TimelineGeometry({ required this.visibleStart, required this.visibleEnd, required this.pixelsPerMinute, this.minCardHeight = 48, }); final TimeOfDay visibleStart; final TimeOfDay visibleEnd; final double pixelsPerMinute; final double minCardHeight; double yForMinutesSinceMidnight(int minutes) { final start = visibleStart.hour * 60 + visibleStart.minute; return (minutes - start) * pixelsPerMinute; } double heightForDuration(int minutes) { final height = minutes * pixelsPerMinute; return height < minCardHeight ? minCardHeight : height; } }