fix: query tracking state on startup to sync with service

This commit is contained in:
fiatcode 2026-04-30 13:13:18 +07:00
parent f764e33944
commit 4eade880b1
No known key found for this signature in database

View file

@ -23,7 +23,32 @@ class _MainScreenState extends State<MainScreen> {
_initLocationStream();
}
void _initLocationStream() {
Future<void> _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<MainScreen> {
} 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