Bilder-Reihenfolge aendern: Dialog aktualisiert sich nicht #14

Closed
opened 2026-09-09 20:12:45 +00:00 by Aceless · 1 comment
Owner
void _reorderImages() {
  showDialog(
    context: context,
    builder: (context) => AlertDialog(
      content: ... ReorderableListView(
        children: _imagePaths.map(...),
        onReorder: (oldIndex, newIndex) {
          setState(() { ... });   // setState des Screens, nicht des Dialogs
        },
      ),

setState gehoert zum _RecipeEditScreenState, der Dialog-Inhalt stammt aber aus einem eigenen builder und wird davon nicht neu gebaut. Der Nutzer zieht ein Bild an eine neue Position, die Liste springt optisch zurueck - die Aenderung ist zwar im Modell, wirkt aber wie ein Bug.

Zweites Problem in derselben Methode:

final index = _imagePaths.indexOf(imagePath);

indexOf liefert bei zweimal identischem Pfad immer den ersten Treffer - Nummerierung und "(Hauptbild)"-Label sind dann falsch.

Vorschlag: StatefulBuilder um den Dialog-Inhalt legen und dessen setState verwenden, statt map ueber asMap().entries iterieren.

Datei: app/lib/screens/recipe_edit_screen.dart:1034-1093

```dart void _reorderImages() { showDialog( context: context, builder: (context) => AlertDialog( content: ... ReorderableListView( children: _imagePaths.map(...), onReorder: (oldIndex, newIndex) { setState(() { ... }); // setState des Screens, nicht des Dialogs }, ), ``` `setState` gehoert zum `_RecipeEditScreenState`, der Dialog-Inhalt stammt aber aus einem eigenen `builder` und wird davon nicht neu gebaut. Der Nutzer zieht ein Bild an eine neue Position, die Liste springt optisch zurueck - die Aenderung ist zwar im Modell, wirkt aber wie ein Bug. Zweites Problem in derselben Methode: ```dart final index = _imagePaths.indexOf(imagePath); ``` `indexOf` liefert bei zweimal identischem Pfad immer den ersten Treffer - Nummerierung und "(Hauptbild)"-Label sind dann falsch. **Vorschlag:** `StatefulBuilder` um den Dialog-Inhalt legen und dessen `setState` verwenden, statt `map` ueber `asMap().entries` iterieren. Datei: `app/lib/screens/recipe_edit_screen.dart:1034-1093`
Author
Owner

Behoben auf Branch frontend-improvements.

Der Dialog nutzt StatefulBuilder, die neue Reihenfolge bleibt sichtbar. asMap statt indexOf.

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`. Der Dialog nutzt StatefulBuilder, die neue Reihenfolge bleibt sichtbar. asMap statt indexOf. <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#14
No description provided.