import 'package:flutter/material.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:provider/provider.dart'; import 'l10n/app_localizations.dart'; import 'pages/collection_page.dart'; import 'pages/collections_list_page.dart'; import 'pages/search_page.dart'; import 'pages/settings_page.dart'; import 'service/search_provider.dart'; import 'service/settings_provider.dart'; import 'service/shared_link_provider.dart'; import 'service/storage.dart'; import 'service/share_intent_service.dart'; import 'theme.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); await Storage.initialize(); runApp( MultiProvider( providers: [ ChangeNotifierProvider(create: (_) => SharedLinkProvider()), ChangeNotifierProvider(create: (_) => SearchProvider()), ChangeNotifierProvider(create: (_) => SettingsProvider()), ], child: const MapsBookmarks(), ), ); } class MapsBookmarks extends StatefulWidget { const MapsBookmarks({super.key}); @override State createState() => _MapsBookmarksState(); } class _MapsBookmarksState extends State with WidgetsBindingObserver { final GlobalKey _navigatorKey = GlobalKey(); final ShareIntentService _shareIntentService = ShareIntentService(); @override void didChangeAppLifecycleState(AppLifecycleState state) { if (state == AppLifecycleState.resumed) { _checkForSharedContent(); } } @override void dispose() { WidgetsBinding.instance.removeObserver(this); super.dispose(); } @override void initState() { super.initState(); WidgetsBinding.instance.addObserver(this); _checkForSharedContent(); } Future _checkForSharedContent() async { final sharedText = await _shareIntentService.getSharedMapsLink(); if (sharedText.isNotEmpty && mounted) { context.read().setCurrentMapsLink(sharedText); } } @override Widget build(BuildContext context) { return MaterialApp( localizationsDelegates: [ AppLocalizations.delegate, GlobalMaterialLocalizations.delegate, GlobalWidgetsLocalizations.delegate, GlobalCupertinoLocalizations.delegate, ], supportedLocales: [Locale('en'), Locale('de')], navigatorKey: _navigatorKey, theme: lightTheme, darkTheme: darkTheme, initialRoute: CollectionsListPage.routeName, routes: { CollectionsListPage.routeName: (context) => const CollectionsListPage(), CollectionPage.routeName: (context) => const CollectionPage(), SearchPage.routeName: (context) => const SearchPage(), SettingsPage.routeName: (context) => const SettingsPage(), }, ); } }