import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; 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'; import 'package:hl_lieferservice/widget/app.dart'; final locator = GetIt.instance; void main() { // Das Networking (HTTP-Stack + Token-Provider) registriert der AppBloc, // sobald die Umgebung aus `assets/hl_server_config.json` feststeht. Alle // Konsumenten von `locator()` 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()); runApp(MultiBlocProvider(providers: [ BlocProvider( create: (context) => AppBloc( repository: EnvironmentRepository(), activate: (config) => registerNetworking(locator: locator, config: config), ), ), BlocProvider(create: (context) => SettingsBloc()) ], child: App())); } class App extends StatefulWidget { const App({super.key}); @override State createState() => _AppState(); } class _AppState extends State { @override void initState() { super.initState(); context.read().add(AppLoadConfig(path: "hl_server_config.json")); context.read().add(LoadSettings()); } @override Widget build(BuildContext context) { return DeliveryApp(); } }