feat(header): Datumswahl im Kopf statt Fahrzeug-Pille

Neue Kalender-Pille im Phase-Stepper: zeigt das Tour-Datum und oeffnet einen
Datepicker, um die Tour eines anderen Tages zu laden (z. B. morgen vorab).
Fahrzeugwechsel bleibt ueber den Drawer erreichbar.

- TourDateCubit haelt das gewaehlte Datum (null = heute, Server autoritativ)
- LoadTour({date}) + TourBloc merkt das Datum (RefreshTour laedt denselben Tag)
- Repository getMyTourDetails({date}) -> API listMyTours(date:) -> GET /me/tours?date=

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Dennis Nemec
2026-09-01 15:42:44 +02:00
parent 7324aa4e7d
commit 7b7cb4eb63
8 changed files with 204 additions and 79 deletions

View File

@ -20,6 +20,7 @@ import 'package:holzleitner_api/holzleitner_api.dart' show HolzleitnerApi;
import 'package:hl_lieferservice/data/repository/tour_repository_impl.dart';
import 'package:hl_lieferservice/feature/delivery/bloc/phase_bloc.dart';
import 'package:hl_lieferservice/feature/delivery/bloc/tour_bloc.dart';
import 'package:hl_lieferservice/feature/delivery/bloc/tour_date_cubit.dart';
import 'package:hl_lieferservice/feature/delivery/bloc/tour_state.dart';
import 'package:hl_lieferservice/widget/home/bloc/navigation_bloc.dart';
import 'package:hl_lieferservice/widget/operations/bloc/operation_bloc.dart';
@ -68,6 +69,11 @@ class _DeliveryAppState extends State<DeliveryApp> {
attachmentCache: locator<AttachmentCache>(),
),
),
BlocProvider(
// Hält das im Header gewählte Tour-Datum (null = heute).
// Steuert, welchen Tag der TourBloc lädt.
create: (context) => TourDateCubit(),
),
BlocProvider(
create: (context) =>
CarSelectBloc(repository: CarSelectionRepository()),
@ -121,6 +127,7 @@ class _DeliveryAppState extends State<DeliveryApp> {
],
child: MaterialApp(
title: 'Holzleitner Auslieferung',
debugShowCheckedModeBanner: false,
// Wrap the Navigator (not just the home route) so the loading
// overlay covers every pushed route — DeliveryDetail, Cars,
// dialogs, etc. — not only the initial home tree.
@ -155,6 +162,7 @@ class _DeliveryAppState extends State<DeliveryApp> {
if (state is AppConfigLoadingFailed) {
return MaterialApp(
title: 'Holzleitner Auslieferung',
debugShowCheckedModeBanner: false,
home: Scaffold(
body: Center(child: Text("Fehler beim Laden der Konfiguration")),
),
@ -163,6 +171,7 @@ class _DeliveryAppState extends State<DeliveryApp> {
return MaterialApp(
title: 'Holzleitner Auslieferung',
debugShowCheckedModeBanner: false,
home: Scaffold(
body: Center(child: const CircularProgressIndicator()),
),