feat(umgebung): Server-Umgebung im Login-Screen waehlbar (Produktion/Test)
- Umgebungen (Name, API-URL, Keycloak-Issuer) kommen aus assets/hl_server_config.json statt hartcodiertem BackendConfig.prod; Testumgebung 192.168.1.9:3001 ist dort hinterlegt - AppBloc laedt die Config, aktiviert die gespeicherte Wahl (Fallback Default) und registriert das Networking; Wechsel persistiert per SharedPreferences und registriert neu - Bloc-Baum ist pro Umgebung gekeyt: beim Wechsel entstehen alle Blocs mit dem neuen API-Client neu - Login-Screen: Zahnrad oben rechts oeffnet Einstellungen mit Umgebungs- Cards (Name + IP:Port); Hinweis auf aktive Umgebung unter dem Button - Fahrzeugauswahl pro Umgebung getrennt (eigene DB = eigene Car-IDs) - Tests fuer Config-Parsing, Auswahl-Fallback, Card-Wechsel, Re-Registrierung Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@ -44,6 +44,10 @@ class _DeliveryAppState extends State<DeliveryApp> {
|
||||
builder: (context, state) {
|
||||
if (state is AppConfigLoaded) {
|
||||
return MultiBlocProvider(
|
||||
// Pro Server-Umgebung ein eigener Baum: Beim Wechsel entstehen
|
||||
// alle Blocs neu und holen sich den frisch registrierten
|
||||
// API-Client. Kein Bloc hält Daten der alten Umgebung.
|
||||
key: ValueKey('environment-${state.active.id}'),
|
||||
providers: [
|
||||
BlocProvider(create: (context) => NavigationBloc()),
|
||||
BlocProvider(create: (context) => OperationBloc()),
|
||||
@ -77,7 +81,11 @@ class _DeliveryAppState extends State<DeliveryApp> {
|
||||
),
|
||||
BlocProvider(
|
||||
create: (context) =>
|
||||
CarSelectBloc(repository: CarSelectionRepository()),
|
||||
CarSelectBloc(
|
||||
repository: CarSelectionRepository(
|
||||
environmentId: state.active.id,
|
||||
),
|
||||
),
|
||||
),
|
||||
BlocProvider(
|
||||
// Phase-D-Migration: produktive CarsRepository-Impl
|
||||
@ -171,7 +179,12 @@ class _DeliveryAppState extends State<DeliveryApp> {
|
||||
title: 'Holzleitner Auslieferung',
|
||||
debugShowCheckedModeBanner: false,
|
||||
home: Scaffold(
|
||||
body: Center(child: Text("Fehler beim Laden der Konfiguration")),
|
||||
body: Center(
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.all(24),
|
||||
child: Text(state.message, textAlign: TextAlign.center),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user