52 lines
1.4 KiB
Dart
52 lines
1.4 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:hl_lieferservice/model/delivery.dart';
|
|
|
|
import 'package:hl_lieferservice/feature/delivery/detail/presentation/delivery_detail_page.dart';
|
|
|
|
class DeliveryListItem extends StatelessWidget {
|
|
final Delivery delivery;
|
|
|
|
const DeliveryListItem({super.key, required this.delivery});
|
|
|
|
Widget _leading(BuildContext context) {
|
|
if (delivery.state == DeliveryState.finished) {
|
|
return Icon(Icons.check_circle, color: Colors.green);
|
|
}
|
|
|
|
if (delivery.state == DeliveryState.canceled) {
|
|
return Icon(Icons.cancel_rounded, color: Colors.red);
|
|
}
|
|
|
|
return Column(
|
|
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
|
children: [
|
|
Icon(Icons.location_on, color: Theme.of(context).primaryColor),
|
|
Text("5min"),
|
|
],
|
|
);
|
|
}
|
|
|
|
void _goToDelivery(BuildContext context) {
|
|
Navigator.of(context).push(
|
|
MaterialPageRoute(
|
|
builder: (context) => DeliveryDetail(delivery: delivery),
|
|
),
|
|
);
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return ListTile(
|
|
title: Text(
|
|
delivery.customer.name,
|
|
style: Theme.of(context).textTheme.titleMedium,
|
|
),
|
|
leading: _leading(context),
|
|
tileColor: Theme.of(context).colorScheme.surfaceContainerHigh,
|
|
subtitle: Text(delivery.customer.address.toString()),
|
|
trailing: Icon(Icons.arrow_forward_ios),
|
|
onTap: () => _goToDelivery(context),
|
|
);
|
|
}
|
|
}
|