From efbb8765de0203d611b0b4e3b4fdf9c4400e9d9e Mon Sep 17 00:00:00 2001 From: stopflock Date: Thu, 28 Aug 2025 11:24:22 -0500 Subject: [PATCH] location editable --- lib/screens/home_screen.dart | 22 ++++++++++++++++++++++ lib/widgets/camera_tag_sheet.dart | 13 +------------ 2 files changed, 23 insertions(+), 12 deletions(-) diff --git a/lib/screens/home_screen.dart b/lib/screens/home_screen.dart index 490aafa..0ef368f 100644 --- a/lib/screens/home_screen.dart +++ b/lib/screens/home_screen.dart @@ -7,6 +7,7 @@ import '../dev_config.dart'; import '../widgets/map_view.dart'; import '../widgets/add_camera_sheet.dart'; +import '../widgets/edit_camera_sheet.dart'; import '../widgets/camera_provider_with_cache.dart'; import '../widgets/download_area_dialog.dart'; @@ -28,6 +29,7 @@ class _HomeScreenState extends State { final GlobalKey _mapViewKey = GlobalKey(); final MapController _mapController = MapController(); FollowMeMode _followMeMode = FollowMeMode.northUp; + bool _editSheetShown = false; String _getFollowMeTooltip() { switch (_followMeMode) { @@ -75,10 +77,30 @@ class _HomeScreenState extends State { ); } + void _openEditCameraSheet() { + // Disable follow-me when editing a camera so the map doesn't jump around + setState(() => _followMeMode = FollowMeMode.off); + + final appState = context.read(); + final session = appState.editSession!; // should be non-null when this is called + + _scaffoldKey.currentState!.showBottomSheet( + (ctx) => EditCameraSheet(session: session), + ); + } + @override Widget build(BuildContext context) { final appState = context.watch(); + // Auto-open edit sheet when edit session starts + if (appState.editSession != null && !_editSheetShown) { + _editSheetShown = true; + WidgetsBinding.instance.addPostFrameCallback((_) => _openEditCameraSheet()); + } else if (appState.editSession == null) { + _editSheetShown = false; + } + return MultiProvider( providers: [ ChangeNotifierProvider(create: (_) => CameraProviderWithCache()), diff --git a/lib/widgets/camera_tag_sheet.dart b/lib/widgets/camera_tag_sheet.dart index 24ae4b3..3853d99 100644 --- a/lib/widgets/camera_tag_sheet.dart +++ b/lib/widgets/camera_tag_sheet.dart @@ -2,7 +2,6 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import '../models/osm_camera_node.dart'; import '../app_state.dart'; -import 'edit_camera_sheet.dart'; class CameraTagSheet extends StatelessWidget { final OsmCameraNode node; @@ -19,17 +18,7 @@ class CameraTagSheet extends StatelessWidget { void _openEditSheet() { Navigator.pop(context); // Close this sheet first - appState.startEditSession(node); - - // Show the edit sheet using a post-frame callback to ensure proper context - WidgetsBinding.instance.addPostFrameCallback((_) { - final session = appState.editSession!; - showModalBottomSheet( - context: context, - builder: (_) => EditCameraSheet(session: session), - showDragHandle: true, - ); - }); + appState.startEditSession(node); // HomeScreen will auto-show the edit sheet } return SafeArea(