import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'core/firebase/firebase_providers.dart'; import 'core/router/app_router.dart'; import 'core/settings/settings_provider.dart'; import 'core/theme/app_theme.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); // Nach jedem Login das Gerät für Push-Erinnerungen registrieren. ref.listen(authStateProvider, (previous, next) { final user = next.value; if (user != null) { ref.read(pushRegistrationServiceProvider).registerDevice(user); } }); 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), ), child: child!, ); }, ); } }