import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'pages/collection_page.dart'; import 'pages/collections_list_page.dart'; import 'pages/search_page.dart'; import 'service/search_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()), ], 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( 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(), }, ); } }