fix: query tracking state on startup to sync with service
This commit is contained in:
parent
f764e33944
commit
4eade880b1
1 changed files with 33 additions and 4 deletions
|
|
@ -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,10 +77,14 @@ class _MainScreenState extends State<MainScreen> {
|
|||
} else {
|
||||
await LocationBridge.startTracking();
|
||||
}
|
||||
await Future.delayed(const Duration(milliseconds: 500));
|
||||
final status = await LocationBridge.getStatus();
|
||||
if (mounted) {
|
||||
setState(() {
|
||||
_isTracking = !_isTracking;
|
||||
_isTracking = status?['isTracking'] == true;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue