25 lines
671 B
Dart
25 lines
671 B
Dart
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;
|
|
}
|
|
}
|