Files
maps_bookmarks/lib/main.dart
2025-11-03 15:59:38 +01:00

75 lines
1.9 KiB
Dart

import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'pages/bookmarks_page.dart';
import 'pages/collections_page.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(
ChangeNotifierProvider(
create: (_) => SharedLinkProvider(),
child: const MapsBookmarks(),
),
);
}
class MapsBookmarks extends StatefulWidget {
const MapsBookmarks({super.key});
@override
State<MapsBookmarks> createState() => _MapsBookmarksState();
}
class _MapsBookmarksState extends State<MapsBookmarks>
with WidgetsBindingObserver {
final GlobalKey<NavigatorState> _navigatorKey = GlobalKey<NavigatorState>();
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<void> _checkForSharedContent() async {
final sharedText = await _shareIntentService.getSharedMapsLink();
if (sharedText.isNotEmpty && mounted) {
context.read<SharedLinkProvider>().setCurrentMapsLink(sharedText);
}
}
@override
Widget build(BuildContext context) {
return MaterialApp(
navigatorKey: _navigatorKey,
theme: lightTheme,
darkTheme: darkTheme,
initialRoute: CollectionsPage.routeName,
routes: {
CollectionsPage.routeName: (context) => const CollectionsPage(),
BookmarksPage.routeName: (context) => const BookmarksPage(),
},
);
}
}