location editable

This commit is contained in:
stopflock
2025-08-28 11:24:22 -05:00
parent fae1cac6e4
commit efbb8765de
2 changed files with 23 additions and 12 deletions

View File

@@ -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<HomeScreen> {
final GlobalKey<MapViewState> _mapViewKey = GlobalKey<MapViewState>();
final MapController _mapController = MapController();
FollowMeMode _followMeMode = FollowMeMode.northUp;
bool _editSheetShown = false;
String _getFollowMeTooltip() {
switch (_followMeMode) {
@@ -75,10 +77,30 @@ class _HomeScreenState extends State<HomeScreen> {
);
}
void _openEditCameraSheet() {
// Disable follow-me when editing a camera so the map doesn't jump around
setState(() => _followMeMode = FollowMeMode.off);
final appState = context.read<AppState>();
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<AppState>();
// 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<CameraProviderWithCache>(create: (_) => CameraProviderWithCache()),

View File

@@ -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(