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