Drohnen-Status-Pille zeigt bei Verbindungsverlust rot/disconnected statt eingefrorener Werte
Waehrend eines Verbindungsverlusts frieren die TelemetryFrame-Werte
bewusst ein (telemetryProvider.value bleibt auf dem letzten Stand, siehe
vorherigen Commit) - die Fusszeilen-Pille im Fly-Modus hat daraus bislang
weiterhin den zuletzt bekannten (ggf. laengst veralteten) Zustand
abgeleitet, statt den Verbindungsverlust selbst widerzuspiegeln.
- domain/telemetry/drone_status.dart: neuer DroneState.disconnected,
computeDroneStatus() bekommt einen neuen Parameter `connected` - hat
Vorrang vor allem anderen (auch vor Emergency) und uebersteuert
connectionQuality auf rot. positionQuality bleibt bewusst unveraendert
(folgt weiterhin den eingefrorenen Werten) - laut Anfrage sollen nur
Drohnen-Icon und Verbindungsqualitaet, nicht die Positionsqualitaet, rot
erzwungen werden.
- fly_screen.dart: `connected: !telemetryAsync.hasError` statt der
bisherigen Ableitung aus einzelnen Telemetriewerten.
- bottom_stats_bar.dart: neues Label/Farbe ("disconnected", rot) fuer den
neuen Zustand in der Drohnen-Status-Pille.
Auf dem Pixel_10a-Emulator verifiziert: WiFi-Verbindungsart (noch nie
verbunden) zeigt bereits korrekt rotes Papierflieger-Icon, rote
Verbindungsqualitaet, rotes Satelliten-Icon und "disconnected" in rot;
Mock-Verbindung zeigt unveraendert normal gruen "ready".
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
e5c87fba5f
commit
46e51b3920
@@ -177,7 +177,8 @@ class _FlyScreenState extends ConsumerState<FlyScreen> {
|
||||
Widget build(BuildContext context) {
|
||||
final waypoints = ref.watch(currentMissionProvider);
|
||||
final droneProfile = ref.watch(activeDroneProfileProvider);
|
||||
final telemetry = ref.watch(telemetryProvider).value;
|
||||
final telemetryAsync = ref.watch(telemetryProvider);
|
||||
final telemetry = telemetryAsync.value;
|
||||
final followDrone = ref.watch(followDroneProvider);
|
||||
// Beobachtet die automatische Ereigniserkennung (Connected/Lost/
|
||||
// Batterie/Failsafe/Verbindungstyp, Doku: "log von kritischen
|
||||
@@ -322,7 +323,17 @@ class _FlyScreenState extends ConsumerState<FlyScreen> {
|
||||
// Ohne Frame (Verbindungsaufbau laeuft noch) liefern die Platzhalterwerte
|
||||
// ueber computeDroneStatus zuverlaessig idle/rot/rot - eine ehrliche
|
||||
// "keine Daten"-Anzeige statt eines unterschiedlichen Widget-Typs.
|
||||
//
|
||||
// connected: telemetryAsync.hasError statt telemetry == null, weil
|
||||
// TelemetryFrame-Werte bei einem Verbindungsverlust bewusst auf dem
|
||||
// letzten Stand "einfrieren" (Doku: "im Drone Detail Menü okay, dass
|
||||
// Daten einfrieren" - telemetry bleibt also nicht null, siehe
|
||||
// telemetryProvider-Doku zu AsyncError mit erhaltenem previous value).
|
||||
// Die Pille selbst soll den Verbindungsverlust trotzdem sofort ehrlich
|
||||
// als "disconnected" zeigen, statt den zuletzt bekannten (ggf. laengst
|
||||
// veralteten) Zustand fortzuschreiben.
|
||||
final droneStatus = computeDroneStatus(
|
||||
connected: !telemetryAsync.hasError,
|
||||
armed: telemetry?.armed ?? false,
|
||||
hasFix: telemetry?.hasFix ?? false,
|
||||
numSat: telemetry?.numSat ?? 0,
|
||||
|
||||
Reference in New Issue
Block a user