mirror of
https://github.com/FoggedLens/deflock-app.git
synced 2026-02-12 16:52:51 +00:00
location editable
This commit is contained in:
@@ -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()),
|
||||
|
||||
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user