ErrorResolutionDialog: KS-Status live aktualisieren während Dialog offen ist

**Gemeldet von Valentin via Chat, 2026-05-05 (Motorsport-CAN-Test-Workflow)** Vale macht CAN-Tests an Motorsportakkus über einen Stecker + ein Modul am PC. Er prüft in der App live, ob die Funktionen ankommen, die er am PC eingibt — speziell ob der Killswitch (KS) aktiv ist oder nicht. Aktuell muss er den Error-Dialog jedes Mal schließen und wieder öffnen, um die Statusänderung zu sehen. **Felix hat in der Chat-Antwort schon zugesagt:** „Das ist möglich und kann ich so mit aufnehmen für die nächste Version". **Root Cause (verified auf github/dev @53b42db):** `lib/features/device_page/components/error_resolution_dialog.dart:290-305` — die `build()`-Methode nutzt zwar `BlocBuilder`, aber die `buildWhen`-Predicate triggert NUR auf `hasChargeOverrideAvailable` Änderungen: ```dart return BlocBuilder( buildWhen: (previous, current) { return previous.currentSessionData?.hasChargeOverrideAvailable != current.currentSessionData?.hasChargeOverrideAvailable; }, builder: (context, state) { final currentGuide = _getCurrentGuide(state.currentSessionData); ... } ); ``` KS-State-Änderungen (`isKillswitchActive`, `powerSwitchReasonInt`, `isAntiTheftActive`, `hasResettableError`) sind nicht in der buildWhen-Predicate enthalten — der Dialog rebuildet also nicht, wenn sich der KS-Status während Vale's CAN-Test ändert. Er zeigt weiterhin den Snapshot der bei Dialog-Öffnung gerendert wurde. Der StreamSubscription in `_subscribeToSessionChanges()` (Z.96) hört zwar auf SessionBloc-Updates, aber NUR um nach Aktionen wie „Reset Error" das Dialog automatisch zu schließen — er triggert keinen Rebuild der UI. **Fix-Plan (klein, ~5 Zeilen):** Die `buildWhen`-Predicate erweitern auf alle Felder die `_getCurrentGuide()` und die UI verwenden: ```dart buildWhen: (previous, current) { final p = previous.currentSessionData; final c = current.currentSessionData; return p?.hasChargeOverrideAvailable != c?.hasChargeOverrideAvailable || p?.powerSwitchReasonInt?.value != c?.powerSwitchReasonInt?.value || p?.isKillswitchActive != c?.isKillswitchActive || p?.isAntiTheftActive != c?.isAntiTheftActive || p?.hasResettableError != c?.hasResettableError; }, ``` Alternative: `buildWhen` ganz entfernen (rebuildet bei jedem State-Tick). Für einen modalen Dialog ist das performance-mäßig unkritisch und robuster gegen zukünftig hinzukommende UI-Felder. **Wert:** Vale's Motorsport-CAN-Test-Workflow wird signifikant produktiver (kein ständiges Schließen + Öffnen mehr). Allgemein nützlich für jeden der die Wirkung eines Reset-/Override-Buttons live sehen will. Screenshots im Chat 2026-05-05 (Slack).
Product
Mobile App
Area
Bluetooth & Connectivity

Share update with 0 linked conversations as well

Upvoters
Status

Completed

Board
💡

Feature Requests

Date

2 months ago

Author

Felix

Subscribe to post

Get notified by email when there are changes.