|
|
@@ -38,6 +38,30 @@ nieuw onderzoek naar P1-24/P1-25.
|
|
|
Geen tijd meer gehad om `emulator-5554` na de crash opnieuw te
|
|
|
proberen of `emulator-5556`/het fysieke toestel in te zetten voor
|
|
|
P1-25 — blijft open voor een volgende sessie.
|
|
|
+5. **Performance-vraag van Bob** (fysieke testtoestellen "enorm traag"
|
|
|
+ ná een schone herinstallatie): geen kapot toestel/instelling
|
|
|
+ gevonden (Developer Options normaal, geen achtergrondbelasting) —
|
|
|
+ bleek gewoon een **debug-build** (`dumpsys package` toonde
|
|
|
+ `DEBUGGABLE` op beide telefoons, universeel en met opzet trager dan
|
|
|
+ een release/profile-build). **Nieuwe staande regel, vastgelegd in
|
|
|
+ `CLAUDE.md`:** voortaan standaard `fvm flutter run --profile -d
|
|
|
+ <device>` voor gewone testrondes, volledige debug-mode
|
|
|
+ (`ff-run-fvm.sh`) alleen nog bij het actief jagen op een specifieke
|
|
|
+ bug. Gedemonstreerd op `K7V8DYTSMVTW6XBI` (profile-build: 56s
|
|
|
+ Gradle + 3.2s install, draait probleemloos).
|
|
|
+6. **P1-24-bouwpoging (~45 min) mislukt, overgedragen aan Bob** — de
|
|
|
+ guard-fix op `HomeUitgaantabelKaartComponent` bleek geblokkeerd op
|
|
|
+ een echte FlutterFlow-UI-beperking (operator "Is Set and Not Empty"
|
|
|
+ niet beschikbaar voor een JSON-Path-gebonden First Value op een
|
|
|
+ ongetypeerd loop-item, geen letterlijke-tekst-invoer voor een 2e
|
|
|
+ AND-conditie) — zie de uitgebreide poging-documentatie bij P1-24
|
|
|
+ hieronder + nieuwe `CLAUDE.md`-notitie. Widget zelf staat nog
|
|
|
+ ongewijzigd/veilig (elke poging netjes teruggedraaid via Cancel/
|
|
|
+ page-reload, geverifieerd). **Bijvangst:** de 2e P1-24-locatie
|
|
|
+ (`PUitgaanSliderKaartComponent`'s `Image.network`) is juist
|
|
|
+ waarschijnlijk wél eenvoudig, want die `logo` is daar een directe
|
|
|
+ String-component-parameter, niet een JSON-Path-binding — apart
|
|
|
+ genoteerd voor Bob.
|
|
|
|
|
|
**Vorige sessie (2026-08-20, laat, look&feel-review mobiel+tablet,
|
|
|
code-only + live emulators `emulator-5554`/`emulator-5556`, geen
|
|
|
@@ -905,7 +929,8 @@ losse P1-taak; de resterende mysterie-crash staat nu apart als
|
|
|
`launchURL()` aan met de kale placeholder-string als URL (geen geldig
|
|
|
schema/host → crash).
|
|
|
|
|
|
-**P1-24 · Eigenaar: Onbepaald.** **Root cause definitief gevonden
|
|
|
+**P1-24 · Eigenaar: Bob (builder-fix geblokkeerd op een operator-
|
|
|
+beperking, zie hieronder).** **Root cause definitief gevonden
|
|
|
2026-08-21 (Claude, sessie 42, na de P0-9-fix live herbevestigd) — de
|
|
|
P0-9-link uit de oude analyse hieronder klopte niet.** Live op verse
|
|
|
`flutter run -d emulator-5554` (dus mét `services_3`-fix) trad de
|
|
|
@@ -942,8 +967,58 @@ LEUK"-kaart in de Home-carousel) i.p.v. de app te laten crashen. Wel
|
|
|
een echte visuele bug (fout icoon i.p.v. foto) en genereert bij elke
|
|
|
page-load een burst van ~40-65 "Failed to decode image"-regels in
|
|
|
logcat (native `ImageDecoder`-fouten, niet zomaar onschuldig — zie de
|
|
|
-kanttekening bij P1-25 hieronder). **Nog niet gebouwd** — mechanische
|
|
|
-fix, klaar voor een volgende builder-sessie.
|
|
|
+kanttekening bij P1-25 hieronder).
|
|
|
+
|
|
|
+**⚠️ Bouwpoging mislukt, overgedragen aan Bob (2026-08-21, Claude,
|
|
|
+sessie 42, ~45 min geprobeerd op widget 2 alleen).** Het probleem: de
|
|
|
+bestaande guard is gebonden via **JSON Path** (`$.logo`, type "Json"),
|
|
|
+en voor dat type biedt de Single-Condition-operator-lijst alleen
|
|
|
+`Equal To`/`Not Equal To`/`Is Set`/`Is Not Set` — **geen**
|
|
|
+"Is Set and Not Empty" (die operator bestaat kennelijk alleen voor
|
|
|
+een écht String-getypeerde binding). Geprobeerd en allemaal
|
|
|
+doodgelopen:
|
|
|
+- Een 2e conditie toevoegen (AND, `$.logo != ''`) via "Add Condition"
|
|
|
+ → "Conditions" → "Single Condition" (moest via de zoekbalk-truc
|
|
|
+ gevonden worden, zie CLAUDE.md) — de First Value van die 2e conditie
|
|
|
+ liet zich wel op `$.logo` binden, maar er bleek **geen manier om een
|
|
|
+ letterlijke lege string `''` als Second Value in te vullen**: de
|
|
|
+ "Second Value → Value"-picker biedt alleen een variabele-bronkiezer
|
|
|
+ (Component Parameters/evenementenItem/Authenticated User/Global
|
|
|
+ Properties/App State), geen vrij tekstveld, en zoeken op "literal"
|
|
|
+ binnen die picker geeft 0 resultaten.
|
|
|
+- First Value omzetten naar **String** via "Predefined Path" i.p.v.
|
|
|
+ "JSON Path" (in de hoop dat dat wél "Is Set and Not Empty" oplevert)
|
|
|
+ — `evenementenItem` heeft geen gekoppeld Custom Data Type/schema
|
|
|
+ (het is een raw JSON-loop-item via Generate Dynamic Children), dus
|
|
|
+ "Predefined Path" toont domweg geen enkel veld om te kiezen.
|
|
|
+- Een "empty"/"length"-transform zoeken onder de JSON-Path-binding se
|
|
|
+ eigen 2e "Available Options"-dropdown (zoals `CLAUDE.md`'s bekende
|
|
|
+ `List Contains Item`-truc voor `List<String>`-checks) — alleen
|
|
|
+ "To Data Type" (wijst naar custom models, niet naar String) en
|
|
|
+ "No Further Changes" beschikbaar, niets bruikbaars.
|
|
|
+- Onderweg 2x per ongeluk een 2e conditie laten hangen/de pagina laten
|
|
|
+ herladen na een vastgelopen geneste "Set Variable"-dialoog (bekend
|
|
|
+ patroon, zie `CLAUDE.md`) — **geen schade**: elke keer via Cancel/
|
|
|
+ page-reload teruggezet naar de oorspronkelijke, werkende "IF `$.logo
|
|
|
+ is set`"-conditie, bevestigd via een laatste check dat de widget
|
|
|
+ ongewijzigd staat.
|
|
|
+**Voor Bob (waarschijnlijk sneller in eigen browser, of gewoon een
|
|
|
+andere aanpak die ik niet gevonden heb):**
|
|
|
+1. [HomeUitgaantabelKaartComponent](https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=widgetTree&component=HomeUitgaantabelKaartComponent) →
|
|
|
+ `ConditionalBuilder` (in Stack, boven `Wrap`/`tagCategorieCompo...`)
|
|
|
+ selecteren → rechterpaneel "First Condition" → IF-pill "`$.logo is
|
|
|
+ set`" aanklikken → **First Value** is al gebonden op `$.logo`
|
|
|
+ (evenementenItem, JSON Path) — de vraag is puur hoe je dit ombuigt
|
|
|
+ naar "ook niet-leeg". Mogelijk werkt het wel meteen in jouw browser
|
|
|
+ zonder de clipping/freeze-problemen die ik tegenkwam.
|
|
|
+2. [PUitgaanSliderKaartComponent](https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&component=PUitgaanSliderKaartComponent) →
|
|
|
+ de `Image.network(widget!.logo!, ...)`-node (rechtsboven op de
|
|
|
+ kaart, regel 147-148 in de export) heeft **helemaal geen guard** —
|
|
|
+ Wrap Widget (Ctrl+B) → ConditionalBuilder, conditie op de rauwe
|
|
|
+ `logo`-component-parameter (niet JSON Path — dit is al een String-
|
|
|
+ parameter, dus "Is Set and Not Empty" zou hier wél gewoon
|
|
|
+ beschikbaar moeten zijn), Then = bestaande Image, Else = Icon
|
|
|
+ `image_not_supported` (zelfde patroon als elders).
|
|
|
|
|
|
**P1-25 · Eigenaar: Onbepaald.** Nieuwe RenderFlex-overflow gevonden
|
|
|
2026-08-15 (Claude, live launch emulator-5554): "A RenderFlex
|