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(); _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) { LocationBridge.locationUpdates.listen((location) {
if (mounted) { if (mounted) {
setState(() { setState(() {
@ -52,10 +77,14 @@ class _MainScreenState extends State<MainScreen> {
} else { } else {
await LocationBridge.startTracking(); await LocationBridge.startTracking();
} }
await Future.delayed(const Duration(milliseconds: 500));
final status = await LocationBridge.getStatus();
if (mounted) {
setState(() { setState(() {
_isTracking = !_isTracking; _isTracking = status?['isTracking'] == true;
}); });
} }
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {