live mission details in footer implemented

This commit is contained in:
Constantin Leue
2026-08-04 09:48:01 +02:00
parent 35351140ae
commit a66c199b37
17 changed files with 295 additions and 17 deletions
+14
View File
@@ -226,6 +226,19 @@ class _FlyScreenState extends ConsumerState<FlyScreen> {
];
}
// Live-Missionsstatus fuer die Details-Pille (Doku: "aktiver Wegpunkt
// 3/23, Distanz und Zeit zum naechsten Wegpunkt" statt der statischen
// Plan-Werte) - siehe FlyMissionStatus-Klassendoku dazu, warum das aus
// Position+Wegpunktkoordinaten berechnet wird statt direkt von MSP
// abgefragt.
final flyMissionStatus = computeFlyMissionStatus(
waypoints: waypoints,
activeWaypointIndex: activeWpIndex,
currentLat: telemetry != null && telemetry.hasFix ? telemetry.lat : null,
currentLon: telemetry != null && telemetry.hasFix ? telemetry.lon : null,
currentSpeedMs: telemetry?.speedMs,
);
return Stack(
children: [
MissionMap(
@@ -273,6 +286,7 @@ class _FlyScreenState extends ConsumerState<FlyScreen> {
activeIndex: -1,
totalDistanceM: missionStats.distanceM,
totalDurationSec: missionStats.durationSec,
flyMissionStatus: flyMissionStatus,
warnings: warnings,
onDetailsTap: _openWaypointList,
onWarningsTap: () => _openWarningsPanel(warnings),
@@ -278,7 +278,9 @@ class _TelemetryFields extends StatelessWidget {
_field('Link quality', '${t.linkQuality}%'),
_field('Flight mode', t.flightMode),
if (t.activeWaypointIndex != null)
_field('Active WP', '${t.activeWaypointIndex}'),
// +1: activeWaypointIndex ist 0-basiert (Array-Index), fuer
// Menschen zaehlt man Wegpunkte ab 1 (siehe TelemetryFrame-Doku).
_field('Active WP', '${t.activeWaypointIndex! + 1}'),
],
);
}