From 24b20e8a5795a21422039c14a80c8bf7643073ce Mon Sep 17 00:00:00 2001 From: stopflock Date: Wed, 27 Aug 2025 18:24:47 -0500 Subject: [PATCH] fix gps on android --- lib/screens/home_screen.dart | 2 ++ lib/widgets/map_view.dart | 16 +++++----------- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/lib/screens/home_screen.dart b/lib/screens/home_screen.dart index 6424137..490aafa 100644 --- a/lib/screens/home_screen.dart +++ b/lib/screens/home_screen.dart @@ -93,7 +93,9 @@ class _HomeScreenState extends State { icon: Icon(_getFollowMeIcon()), onPressed: () { setState(() { + final oldMode = _followMeMode; _followMeMode = _getNextFollowMeMode(); + debugPrint('[HomeScreen] Follow mode changed: $oldMode → $_followMeMode'); }); // If enabling follow-me, retry location init in case permission was granted if (_followMeMode != FollowMeMode.off) { diff --git a/lib/widgets/map_view.dart b/lib/widgets/map_view.dart index 64c47c4..31c62dc 100644 --- a/lib/widgets/map_view.dart +++ b/lib/widgets/map_view.dart @@ -21,7 +21,6 @@ import 'map/direction_cones.dart'; import 'map/map_overlays.dart'; import 'network_status_indicator.dart'; import '../dev_config.dart'; - import '../screens/home_screen.dart' show FollowMeMode; class MapView extends StatefulWidget { @@ -137,14 +136,15 @@ class MapViewState extends State { @override void didUpdateWidget(covariant MapView oldWidget) { super.didUpdateWidget(oldWidget); + // Back to original pattern - simple check if (widget.followMeMode != FollowMeMode.off && oldWidget.followMeMode == FollowMeMode.off && _currentLatLng != null) { - // Use smooth animation when follow me is first enabled + // Move to current location when follow me is first enabled if (widget.followMeMode == FollowMeMode.northUp) { _controller.move(_currentLatLng!, _controller.camera.zoom); } else if (widget.followMeMode == FollowMeMode.rotating) { - // When switching to rotating mode, reset to north-up first, then let GPS handle rotation + // When switching to rotating mode, reset to north-up first _controller.moveAndRotate(_currentLatLng!, _controller.camera.zoom, 0.0); } } @@ -155,18 +155,12 @@ class MapViewState extends State { if (perm == LocationPermission.denied || perm == LocationPermission.deniedForever) return; - // Configure location settings for smoother tracking - const locationSettings = LocationSettings( - accuracy: LocationAccuracy.high, - distanceFilter: 1, // Update every 1 meter - timeLimit: Duration(seconds: 2), // Max 2 seconds between updates - ); - _positionSub = - Geolocator.getPositionStream(locationSettings: locationSettings).listen((Position position) { + Geolocator.getPositionStream().listen((Position position) { final latLng = LatLng(position.latitude, position.longitude); setState(() => _currentLatLng = latLng); + // Back to original pattern - directly check widget parameter if (widget.followMeMode != FollowMeMode.off) { WidgetsBinding.instance.addPostFrameCallback((_) { if (mounted) {