import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:hl_lieferservice/feature/authentication/bloc/auth_bloc.dart'; import 'package:hl_lieferservice/feature/authentication/bloc/auth_state.dart'; import 'package:hl_lieferservice/feature/cars/bloc/cars_bloc.dart'; import 'package:hl_lieferservice/feature/cars/bloc/cars_event.dart'; import 'package:hl_lieferservice/feature/cars/bloc/cars_state.dart'; import 'package:hl_lieferservice/feature/cars/presentation/car_management.dart'; import 'package:hl_lieferservice/feature/delivery/overview/bloc/tour_bloc.dart'; import 'package:hl_lieferservice/feature/delivery/overview/bloc/tour_event.dart'; import 'package:hl_lieferservice/feature/delivery/overview/bloc/tour_state.dart'; import 'package:hl_lieferservice/model/car.dart'; class CarManagementPage extends StatefulWidget { const CarManagementPage({super.key}); @override State createState() => _CarManagementPageState(); } class _CarManagementPageState extends State { late Authenticated _authState; @override void initState() { super.initState(); // Load cars _authState = context.read().state as Authenticated; context.read().add(CarLoad(teamId: _authState.user.number)); } void _add(String plate) { context.read().add( CarAdd(teamId: _authState.user.number, plate: plate), ); } void _remove(String id) { context.read().add( CarDelete(carId: id, teamId: _authState.user.number), ); } void _edit(String id, String plate) { context.read().add( CarEdit( newCar: Car(id: int.parse(id), plate: plate), teamId: _authState.user.number, ), ); } @override Widget build(BuildContext context) { return Scaffold( body: BlocConsumer( listener: (context, state) { if (state is CarsLoaded) { var tour = (context.read().state as TourLoaded).tour.copyWith(); tour.driver.cars = state.cars; context.read().add(UpdateTour(tour: tour)); } }, builder: (context, state) { debugPrint('BlocBuilder rebuilding with state: $state'); if (state is CarsLoading) { return Center(child: const CircularProgressIndicator()); } if (state is CarsLoaded) { return CarManagementOverview( cars: state.cars, onEdit: _edit, onAdd: _add, onDelete: _remove, ); } if (state is CarsLoadingFailed) { return Center( child: const Text("Fahrzeuge konnten nicht geladen werden"), ); } return Container(); }, ), ); } }