import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:worldhopper/l10n/app_localizations.dart'; import 'package:worldhopper/config/router.dart'; import 'package:worldhopper/config/theme.dart'; import 'package:worldhopper/config/constants.dart'; import 'package:worldhopper/providers/theme_provider.dart'; import 'package:worldhopper/providers/locale_provider.dart'; import 'package:worldhopper/providers/download_provider.dart'; /// Root application widget class App extends ConsumerStatefulWidget { const App({super.key}); @override ConsumerState createState() => _AppState(); } class _AppState extends ConsumerState { @override void initState() { super.initState(); _checkIncompleteDownloads(); } Future _checkIncompleteDownloads() async { try { final hasActive = await ref.read(hasActiveDownloadsProvider.future); if (hasActive) { ref.read(downloadPollingActiveProvider.notifier).state = true; } } catch (e) { debugPrint('Failed to check incomplete downloads: $e'); } } @override Widget build(BuildContext context) { final themeMode = ref.watch(themeNotifierProvider); final locale = ref.watch(localeNotifierProvider); return MaterialApp.router( title: AppConstants.appName, theme: AppTheme.lightTheme, darkTheme: AppTheme.darkTheme, themeMode: themeMode, locale: locale, localizationsDelegates: const [ AppLocalizations.delegate, GlobalMaterialLocalizations.delegate, GlobalWidgetsLocalizations.delegate, GlobalCupertinoLocalizations.delegate, ], supportedLocales: AppLocalizations.supportedLocales, routerConfig: AppRouter.router, debugShowCheckedModeBanner: false, ); } }