import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'core/router/app_router.dart'; import 'core/settings/settings_provider.dart'; import 'core/theme/app_theme.dart'; import 'features/auth/presentation/bootstrap_gate.dart'; import 'features/household/data/household_providers.dart'; import 'features/notifications/data/push_registration_service.dart'; import 'l10n/generated/app_localizations.dart'; class LeafItToMeApp extends ConsumerWidget { const LeafItToMeApp({super.key}); @override Widget build(BuildContext context, WidgetRef ref) { final settings = ref.watch(settingsProvider); final router = ref.watch(appRouterProvider); // Hält die Push-Registrierung aktiv: registriert das Gerät, sobald ein // Nutzer angemeldet ist (auch wenn der Login vor dem App-Start bestand). ref.watch(pushSetupProvider); // Trägt die eigene E-Mail in Alt-Haushalten nach (Besitzer-Anzeige). ref.watch(memberEntrySyncProvider); return MaterialApp.router( routerConfig: router, onGenerateTitle: (context) => AppLocalizations.of(context).appTitle, theme: buildAppTheme( brightness: Brightness.light, highContrast: settings.highContrast, ), darkTheme: buildAppTheme( brightness: Brightness.dark, highContrast: settings.highContrast, ), themeMode: settings.themeMode, localizationsDelegates: AppLocalizations.localizationsDelegates, supportedLocales: AppLocalizations.supportedLocales, builder: (context, child) { // App-Schriftgröße wird ZUSÄTZLICH zur System-Schriftgröße angewendet, // damit die Systemeinstellung des Nutzers respektiert bleibt. final systemScale = MediaQuery.textScalerOf(context).scale(1.0); return MediaQuery( data: MediaQuery.of(context).copyWith( textScaler: TextScaler.linear(systemScale * settings.textSize.factor), ), // Lässt frisch angemeldete Nutzer erst in die App, wenn Profil + // Haushalt existieren (legt beides bei Bedarf an). child: BootstrapGate(child: child!), ); }, ); } }