mirror of
https://github.com/FoggedLens/deflock-app.git
synced 2026-08-16 08:00:20 +02:00
feat: wire HomeScreen to handle node deep links
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
committed by
Claude Code
co-authored by
Claude Sonnet 4.6
parent
74d8214dda
commit
480f99b360
@@ -19,6 +19,7 @@ import '../models/osm_node.dart';
|
|||||||
import '../models/suspected_location.dart';
|
import '../models/suspected_location.dart';
|
||||||
import '../models/search_result.dart';
|
import '../models/search_result.dart';
|
||||||
import '../services/changelog_service.dart';
|
import '../services/changelog_service.dart';
|
||||||
|
import '../services/deep_link_service.dart';
|
||||||
import 'coordinators/sheet_coordinator.dart';
|
import 'coordinators/sheet_coordinator.dart';
|
||||||
import 'coordinators/navigation_coordinator.dart';
|
import 'coordinators/navigation_coordinator.dart';
|
||||||
import 'coordinators/map_interaction_handler.dart';
|
import 'coordinators/map_interaction_handler.dart';
|
||||||
@@ -57,10 +58,12 @@ class _HomeScreenState extends State<HomeScreen> with TickerProviderStateMixin {
|
|||||||
_sheetCoordinator = SheetCoordinator();
|
_sheetCoordinator = SheetCoordinator();
|
||||||
_navigationCoordinator = NavigationCoordinator();
|
_navigationCoordinator = NavigationCoordinator();
|
||||||
_mapInteractionHandler = MapInteractionHandler();
|
_mapInteractionHandler = MapInteractionHandler();
|
||||||
|
DeepLinkService().onNodeDeepLink = _handleNodeDeepLink;
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void dispose() {
|
void dispose() {
|
||||||
|
DeepLinkService().onNodeDeepLink = null;
|
||||||
_mapController.dispose();
|
_mapController.dispose();
|
||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
@@ -286,6 +289,27 @@ class _HomeScreenState extends State<HomeScreen> with TickerProviderStateMixin {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void _handleNodeDeepLink(OsmNode node) {
|
||||||
|
// Fly to node at zoom 16
|
||||||
|
try {
|
||||||
|
_mapController.animateTo(
|
||||||
|
dest: node.coord,
|
||||||
|
zoom: 16.0,
|
||||||
|
duration: const Duration(milliseconds: 600),
|
||||||
|
curve: Curves.easeOut,
|
||||||
|
);
|
||||||
|
} catch (e) {
|
||||||
|
debugPrint('[HomeScreen] Could not animate to deep link node: $e');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Open the node details sheet after map animation settles
|
||||||
|
Future.delayed(const Duration(milliseconds: 700), () {
|
||||||
|
if (mounted) {
|
||||||
|
openNodeTagSheet(node);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
void openNodeTagSheet(OsmNode node) {
|
void openNodeTagSheet(OsmNode node) {
|
||||||
// Handle the map interaction (centering and follow-me disable)
|
// Handle the map interaction (centering and follow-me disable)
|
||||||
_mapInteractionHandler.handleNodeTap(
|
_mapInteractionHandler.handleNodeTap(
|
||||||
|
|||||||
Reference in New Issue
Block a user