added provider for current link

This commit is contained in:
2025-11-03 15:59:38 +01:00
parent db61809939
commit 7211560b8d
4 changed files with 111 additions and 17 deletions

View File

@@ -1,7 +1,8 @@
// main.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';
@@ -9,7 +10,12 @@ import 'theme.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Storage.initialize();
runApp(const MapsBookmarks());
runApp(
ChangeNotifierProvider(
create: (_) => SharedLinkProvider(),
child: const MapsBookmarks(),
),
);
}
class MapsBookmarks extends StatefulWidget {
@@ -21,15 +27,14 @@ class MapsBookmarks extends StatefulWidget {
class _MapsBookmarksState extends State<MapsBookmarks>
with WidgetsBindingObserver {
final ShareIntentService _shareIntentService = ShareIntentService();
final GlobalKey<NavigatorState> _navigatorKey = GlobalKey<NavigatorState>();
final ShareIntentService _shareIntentService = ShareIntentService();
@override
void initState() {
super.initState();
WidgetsBinding.instance.addObserver(this);
// Check for shared content on app start
_checkForSharedContent();
void didChangeAppLifecycleState(AppLifecycleState state) {
if (state == AppLifecycleState.resumed) {
_checkForSharedContent();
}
}
@override
@@ -39,24 +44,20 @@ class _MapsBookmarksState extends State<MapsBookmarks>
}
@override
void didChangeAppLifecycleState(AppLifecycleState state) {
if (state == AppLifecycleState.resumed) {
_checkForSharedContent();
}
void initState() {
super.initState();
WidgetsBinding.instance.addObserver(this);
_checkForSharedContent();
}
Future<void> _checkForSharedContent() async {
final sharedText = await _shareIntentService.getSharedMapsLink();
if (sharedText.isNotEmpty && mounted) {
_handleSharedMapsLink(sharedText);
context.read<SharedLinkProvider>().setCurrentMapsLink(sharedText);
}
}
void _handleSharedMapsLink(String sharedText) {
//TODO: implement
}
@override
Widget build(BuildContext context) {
return MaterialApp(

View File

@@ -0,0 +1,19 @@
import 'package:flutter/material.dart';
import 'package:metadata_fetch/metadata_fetch.dart';
import '../model/maps_link_metadata.dart';
class SharedLinkProvider extends ChangeNotifier {
MapsLinkMetadata? _currentMapsLinkMetadata;
void setCurrentMapsLink(String mapsLink) async {
final metadata = await MetadataFetch.extract(mapsLink);
_currentMapsLinkMetadata = MapsLinkMetadata(
url: mapsLink,
placeName: metadata?.title ?? '',
);
notifyListeners();
}
MapsLinkMetadata? get currentMapsLinkMetadata => _currentMapsLinkMetadata;
}

View File

@@ -49,6 +49,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.19.1"
csslib:
dependency: transitive
description:
name: csslib
sha256: "09bad715f418841f976c77db72d5398dc1253c21fb9c0c7f0b0b985860b2d58e"
url: "https://pub.dev"
source: hosted
version: "1.0.2"
cupertino_icons:
dependency: "direct main"
description:
@@ -104,6 +112,30 @@ packages:
description: flutter
source: sdk
version: "0.0.0"
html:
dependency: transitive
description:
name: html
sha256: "6d1264f2dffa1b1101c25a91dff0dc2daee4c18e87cd8538729773c073dbf602"
url: "https://pub.dev"
source: hosted
version: "0.15.6"
http:
dependency: transitive
description:
name: http
sha256: bb2ce4590bc2667c96f318d68cac1b5a7987ec819351d32b1c987239a815e007
url: "https://pub.dev"
source: hosted
version: "1.5.0"
http_parser:
dependency: transitive
description:
name: http_parser
sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571"
url: "https://pub.dev"
source: hosted
version: "4.1.2"
leak_tracker:
dependency: transitive
description:
@@ -160,6 +192,22 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.16.0"
metadata_fetch:
dependency: "direct main"
description:
name: metadata_fetch
sha256: "24a713eaddbebea3dc3036a6c1d6f7c57e187fff5f0ef07be3e3ebbb7820c3e7"
url: "https://pub.dev"
source: hosted
version: "0.4.2"
nested:
dependency: transitive
description:
name: nested
sha256: "03bac4c528c64c95c722ec99280375a6f2fc708eec17c7b3f07253b626cd2a20"
url: "https://pub.dev"
source: hosted
version: "1.0.0"
path:
dependency: transitive
description:
@@ -208,6 +256,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.1.8"
provider:
dependency: "direct main"
description:
name: provider
sha256: "4e82183fa20e5ca25703ead7e05de9e4cceed1fbd1eadc1ac3cb6f565a09f272"
url: "https://pub.dev"
source: hosted
version: "6.1.5+1"
shared_preferences:
dependency: "direct main"
description:
@@ -301,6 +357,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.4.1"
string_validator:
dependency: transitive
description:
name: string_validator
sha256: "240f4c98027dfbe8639c8271ef18cc9de735b47067aa15a720cfed9576a512b1"
url: "https://pub.dev"
source: hosted
version: "1.2.0"
term_glyph:
dependency: transitive
description:
@@ -317,6 +381,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "0.7.6"
typed_data:
dependency: transitive
description:
name: typed_data
sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006
url: "https://pub.dev"
source: hosted
version: "1.4.0"
vector_math:
dependency: transitive
description:

View File

@@ -15,6 +15,8 @@ dependencies:
cupertino_icons: ^1.0.8
android_intent_plus: ^6.0.0
shared_preferences: ^2.3.2
provider: ^6.1.5+1
metadata_fetch: ^0.4.2
dev_dependencies:
flutter_test: