Fokus- und Fehler-Rahmen sind in allen 'modern'-Feldern abgeschaltet #22

Closed
opened 2026-09-09 20:12:48 +00:00 by Aceless · 1 comment
Owner

In ModernSearchField, ModernWeekField, ModernDateField und ModernDropdown steht durchgehend:

border: OutlineInputBorder(..., borderSide: BorderSide.none),
focusedBorder: OutlineInputBorder(..., borderSide: BorderSide.none),
focusedErrorBorder: OutlineInputBorder(..., borderSide: BorderSide.none),

Die eigentlich vorgesehenen Varianten stehen direkt darueber auskommentiert. Konsequenzen:

  • Ein fokussiertes Feld ist optisch nicht vom unfokussierten zu unterscheiden - relevant fuer Tastaturnutzung und fuer Menschen mit eingeschraenkter Sicht (WCAG 2.4.7 Focus Visible)
  • focusedErrorBorder ohne Rahmen heisst: sobald ein Feld mit Fehler den Fokus bekommt, verschwindet die rote Umrandung

Zwei weitere Punkte in denselben Widgets:

  • ModernIconButton setzt Tooltip(message: tooltip ?? '') - bei fehlendem Tooltip entsteht ein leerer Tooltip statt gar keinem, und der Button hat kein Semantics-Label fuer Screenreader
  • ModernSearchField blendet den Clear-Button abhaengig von _controller.text ein, haengt sich aber keinen Listener an den Controller. Der Button erscheint nur, wenn zufaellig aus anderem Grund neu gebaut wird

Vorschlag: Die auskommentierten focusedBorder-Varianten aktivieren, errorBorder/focusedErrorBorder mit cs.error versehen, den Tooltip nur bei tooltip != null rendern und im Suchfeld _controller.addListener setzen.

Dateien: app/lib/widgets/modern_search_field.dart:63-83, modern_week_field.dart:73-82, modern_date_field.dart:63-81, modern_dropdown.dart:45-67, modern_icon_button.dart:26-27

In `ModernSearchField`, `ModernWeekField`, `ModernDateField` und `ModernDropdown` steht durchgehend: ```dart border: OutlineInputBorder(..., borderSide: BorderSide.none), focusedBorder: OutlineInputBorder(..., borderSide: BorderSide.none), focusedErrorBorder: OutlineInputBorder(..., borderSide: BorderSide.none), ``` Die eigentlich vorgesehenen Varianten stehen direkt darueber auskommentiert. Konsequenzen: - Ein fokussiertes Feld ist optisch nicht vom unfokussierten zu unterscheiden - relevant fuer Tastaturnutzung und fuer Menschen mit eingeschraenkter Sicht (WCAG 2.4.7 Focus Visible) - `focusedErrorBorder` ohne Rahmen heisst: sobald ein Feld mit Fehler den Fokus bekommt, verschwindet die rote Umrandung Zwei weitere Punkte in denselben Widgets: - `ModernIconButton` setzt `Tooltip(message: tooltip ?? '')` - bei fehlendem Tooltip entsteht ein leerer Tooltip statt gar keinem, und der Button hat kein `Semantics`-Label fuer Screenreader - `ModernSearchField` blendet den Clear-Button abhaengig von `_controller.text` ein, haengt sich aber keinen Listener an den Controller. Der Button erscheint nur, wenn zufaellig aus anderem Grund neu gebaut wird **Vorschlag:** Die auskommentierten `focusedBorder`-Varianten aktivieren, `errorBorder`/`focusedErrorBorder` mit `cs.error` versehen, den Tooltip nur bei `tooltip != null` rendern und im Suchfeld `_controller.addListener` setzen. Dateien: `app/lib/widgets/modern_search_field.dart:63-83`, `modern_week_field.dart:73-82`, `modern_date_field.dart:63-81`, `modern_dropdown.dart:45-67`, `modern_icon_button.dart:26-27`
Author
Owner

Behoben auf Branch frontend-improvements.

Fokus- und Fehlerrahmen sind in allen modern-Feldern wieder aktiv, ModernIconButton hat keinen leeren Tooltip mehr und traegt ein Semantics-Label, das Suchfeld hat einen Controller-Listener.

Commits
  • 47edeeb Added Claude
  • 9b16a6e Einstellungen mit Ladebalken, url_launcher-Plugin-Registrierung
  • 8ad68a4 Settings erreichbar, Secrets sichern, Theme-Tokens, toter Code weg, Tests
  • bf204d3 Rezeptliste, Detail, Vorschlaege und Spaces ueberarbeiten
  • d85c681 Rezept-Editor: Absturz, stiller Datenverlust und Controller-Leaks beheben
  • d970fbe Provider-State korrigieren, Fehler sichtbar machen, Wochenlogik zentralisieren
  • 71e557d Start entkoppeln, API-Client haerten, Theme auf Tokens umstellen

flutter analyze: 0 Issues. flutter test: 22 Tests gruen.

Behoben auf Branch `frontend-improvements`. Fokus- und Fehlerrahmen sind in allen modern-Feldern wieder aktiv, ModernIconButton hat keinen leeren Tooltip mehr und traegt ein Semantics-Label, das Suchfeld hat einen Controller-Listener. <details><summary>Commits</summary> - 47edeeb Added Claude - 9b16a6e Einstellungen mit Ladebalken, url_launcher-Plugin-Registrierung - 8ad68a4 Settings erreichbar, Secrets sichern, Theme-Tokens, toter Code weg, Tests - bf204d3 Rezeptliste, Detail, Vorschlaege und Spaces ueberarbeiten - d85c681 Rezept-Editor: Absturz, stiller Datenverlust und Controller-Leaks beheben - d970fbe Provider-State korrigieren, Fehler sichtbar machen, Wochenlogik zentralisieren - 71e557d Start entkoppeln, API-Client haerten, Theme auf Tokens umstellen </details> `flutter analyze`: 0 Issues. `flutter test`: 22 Tests gruen.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
Aceless/RecipePlanner#22
No description provided.