import 'package:flutter/material.dart'; import 'package:hl_lieferservice/model/delivery.dart' show DeliveryState; import 'package:hl_lieferservice/model/tour.dart'; import 'package:intl/intl.dart'; class DeliveryInfo extends StatelessWidget { final Tour tour; final int? selectedCarId; const DeliveryInfo({super.key, required this.tour, this.selectedCarId}); @override Widget build(BuildContext context) { final String date = DateFormat("dd.MM.yyyy").format(tour.date); final relevantDeliveries = selectedCarId != null ? tour.deliveries.where((d) => d.carId == selectedCarId).toList() : tour.deliveries; final total = relevantDeliveries.length; final done = relevantDeliveries .where((d) => d.state == DeliveryState.finished) .length; final progress = total > 0 ? done / total : 0.0; final allDone = total > 0 && done == total; return Padding( padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 15), child: SizedBox( width: double.infinity, child: Card( color: Theme.of(context).colorScheme.onSecondary, child: Padding( padding: const EdgeInsets.all(20), child: Column( mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Row( children: [ const Icon(Icons.calendar_month), const Padding( padding: EdgeInsets.only(left: 5), child: Text("Datum"), ), ], ), Text(date), ], ), const SizedBox(height: 15), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Row( children: [ const Icon(Icons.local_shipping_outlined), const Padding( padding: EdgeInsets.only(left: 5), child: Text("Lieferungen"), ), ], ), Text("$done / $total"), ], ), const SizedBox(height: 10), ClipRRect( borderRadius: BorderRadius.circular(4), child: LinearProgressIndicator( value: progress, minHeight: 6, backgroundColor: Theme.of(context).colorScheme.surfaceContainerHighest, valueColor: AlwaysStoppedAnimation( allDone ? Colors.green : Theme.of(context).primaryColor, ), ), ), ], ), ), ), ), ); } }