60 lines
1.7 KiB
Dart
60 lines
1.7 KiB
Dart
import 'package:flutter/material.dart';
|
|
|
|
class DayHeader extends StatelessWidget {
|
|
const DayHeader({
|
|
super.key,
|
|
required this.date,
|
|
required this.totalDuration,
|
|
});
|
|
|
|
final DateTime date;
|
|
final Duration totalDuration;
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
final colorScheme = Theme.of(context).colorScheme;
|
|
return Padding(
|
|
padding: const EdgeInsets.fromLTRB(16, 16, 16, 4),
|
|
child: Row(
|
|
children: [
|
|
Text(
|
|
_label(date),
|
|
style: Theme.of(context).textTheme.labelLarge?.copyWith(
|
|
color: colorScheme.primary,
|
|
fontWeight: FontWeight.bold,
|
|
),
|
|
),
|
|
const Spacer(),
|
|
Text(
|
|
_fmt(totalDuration),
|
|
style: Theme.of(context).textTheme.labelMedium?.copyWith(
|
|
color: colorScheme.onSurfaceVariant,
|
|
),
|
|
),
|
|
],
|
|
),
|
|
);
|
|
}
|
|
|
|
String _label(DateTime d) {
|
|
final now = DateTime.now();
|
|
final today = DateTime(now.year, now.month, now.day);
|
|
final yesterday = today.subtract(const Duration(days: 1));
|
|
final target = DateTime(d.year, d.month, d.day);
|
|
|
|
if (target == today) return 'Today';
|
|
if (target == yesterday) return 'Yesterday';
|
|
|
|
const weekdays = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'];
|
|
const months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
|
|
'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
|
|
return '${weekdays[d.weekday - 1]}, ${d.day} ${months[d.month - 1]}';
|
|
}
|
|
|
|
String _fmt(Duration d) {
|
|
final h = d.inHours;
|
|
final m = d.inMinutes % 60;
|
|
if (h > 0) return '${h}h ${m}m';
|
|
return '${m}m';
|
|
}
|
|
}
|