Files
Holzleitner-Lieferservice-App/lib/feature/cars/presentation/car_card.dart
Dennis Nemec 2470299a10 BIG FAT
2026-04-28 13:03:09 +02:00

103 lines
3.0 KiB
Dart

import 'package:flutter/material.dart';
import '../../../model/car.dart';
import 'car_dialog.dart';
class CarCard extends StatelessWidget {
final Car car;
final bool isSelected;
final Function(Car car) onDelete;
final Function(Car car, String newName) onEdit;
const CarCard({
super.key,
required this.car,
required this.onEdit,
required this.onDelete,
this.isSelected = false,
});
@override
Widget build(BuildContext context) {
final primary = Theme.of(context).primaryColor;
return Card(
color: isSelected ? primary.withValues(alpha: 0.08) : null,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(12),
side: isSelected
? BorderSide(color: primary, width: 2)
: BorderSide.none,
),
child: Padding(
padding: const EdgeInsets.all(10),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Row(
children: [
Padding(
padding: const EdgeInsets.only(left: 10),
child: Icon(
Icons.local_shipping,
size: 32,
color: primary,
),
),
Padding(
padding: const EdgeInsets.only(left: 10),
child: Text(
car.plate,
style: TextStyle(
fontWeight: isSelected
? FontWeight.bold
: FontWeight.normal,
),
),
),
if (isSelected)
Padding(
padding: const EdgeInsets.only(left: 8),
child: Icon(
Icons.check_circle,
size: 20,
color: primary,
semanticLabel: 'Aktuell ausgewählt',
),
),
],
),
Row(
children: [
IconButton(
onPressed: () {
showDialog(
context: context,
builder: (context) {
return CarDialog(
onAction: (plate) {
onEdit(car, plate);
},
action: CarAction.edit,
initialPlateValue: car.plate,
);
},
);
},
icon: Icon(Icons.edit, color: Theme.of(context).primaryColor),
),
IconButton(
onPressed: () {
onDelete(car);
},
icon: const Icon(Icons.delete, color: Colors.redAccent),
),
],
),
],
),
),
);
}
}