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:
@ -4,6 +4,7 @@ import 'package:get_it/get_it.dart';
|
||||
import 'package:hl_lieferservice/bloc/app_bloc.dart';
|
||||
import 'package:hl_lieferservice/bloc/app_events.dart';
|
||||
import 'package:hl_lieferservice/data/cache/attachment_cache.dart';
|
||||
import 'package:hl_lieferservice/data/network/environment_repository.dart';
|
||||
import 'package:hl_lieferservice/data/network/network_locator.dart';
|
||||
import 'package:hl_lieferservice/feature/settings/bloc/settings_bloc.dart';
|
||||
import 'package:hl_lieferservice/feature/settings/bloc/settings_event.dart';
|
||||
@ -12,19 +13,23 @@ import 'package:hl_lieferservice/widget/app.dart';
|
||||
final locator = GetIt.instance;
|
||||
|
||||
void main() {
|
||||
// Backend-Migration Phase A: HTTP-Stack + Token-Provider registrieren,
|
||||
// bevor irgendein Bloc starten kann. Wirft eine Compile-Sicherheit
|
||||
// hin, dass `HolzleitnerApi` ab hier per `locator<HolzleitnerApi>()`
|
||||
// verfügbar ist.
|
||||
registerNetworking(locator: locator);
|
||||
|
||||
// Das Networking (HTTP-Stack + Token-Provider) registriert der AppBloc,
|
||||
// sobald die Umgebung aus `assets/hl_server_config.json` feststeht. Alle
|
||||
// Konsumenten von `locator<HolzleitnerApi>()` entstehen erst danach
|
||||
// (Bloc-Baum wird erst bei `AppConfigLoaded` gebaut).
|
||||
// Persistenter Vorschau-Cache für Attachment-Bilder. Über die gesamte
|
||||
// App-Lebensdauer stabil und zustandslos (das Verzeichnis löst er lazy
|
||||
// selbst auf), daher hier als Singleton.
|
||||
locator.registerSingleton<AttachmentCache>(AttachmentCache());
|
||||
|
||||
runApp(MultiBlocProvider(providers: [
|
||||
BlocProvider(create: (context) => AppBloc(),),
|
||||
BlocProvider(
|
||||
create: (context) => AppBloc(
|
||||
repository: EnvironmentRepository(),
|
||||
activate: (config) =>
|
||||
registerNetworking(locator: locator, config: config),
|
||||
),
|
||||
),
|
||||
BlocProvider(create: (context) => SettingsBloc())
|
||||
], child: App()));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user