From 4eade880b1d9a8c206c39e349985428b4b4b687a Mon Sep 17 00:00:00 2001 From: fiatcode Date: Thu, 30 Apr 2026 13:13:18 +0700 Subject: [PATCH] fix: query tracking state on startup to sync with service --- lib/main_screen.dart | 37 +++++++++++++++++++++++++++++++++---- 1 file changed, 33 insertions(+), 4 deletions(-) diff --git a/lib/main_screen.dart b/lib/main_screen.dart index 0ec2427..98228fb 100644 --- a/lib/main_screen.dart +++ b/lib/main_screen.dart @@ -23,7 +23,32 @@ class _MainScreenState extends State { _initLocationStream(); } - void _initLocationStream() { + Future _initLocationStream() async { + final status = await LocationBridge.getStatus(); + if (mounted) { + setState(() { + _isTracking = status?['isTracking'] == true; + final lat = status?['lastLatitude']; + final lon = status?['lastLongitude']; + if (lat != null && lat != 0.0) { + _lastLat = lat.toStringAsFixed(4); + } + if (lon != null && lon != 0.0) { + _lastLon = lon.toStringAsFixed(4); + } + final speed = status?['lastSpeed']; + if (speed != null) { + _lastSpeed = '${(speed * 3.6).toStringAsFixed(0)} km/h'; + } + final timestamp = status?['lastTimestamp']; + if (timestamp != null) { + _lastTime = _formatTime( + DateTime.fromMillisecondsSinceEpoch(timestamp), + ); + } + }); + } + LocationBridge.locationUpdates.listen((location) { if (mounted) { setState(() { @@ -52,9 +77,13 @@ class _MainScreenState extends State { } else { await LocationBridge.startTracking(); } - setState(() { - _isTracking = !_isTracking; - }); + await Future.delayed(const Duration(milliseconds: 500)); + final status = await LocationBridge.getStatus(); + if (mounted) { + setState(() { + _isTracking = status?['isTracking'] == true; + }); + } } @override