|
|
@@ -1,6 +1,39 @@
|
|
|
# Uitgaanskrant — takenlijst
|
|
|
|
|
|
-**Deze sessie (2026-08-21, sessie 42, ~1-2u builder-werk +
|
|
|
+**Deze sessie (2026-08-21, sessie 43, ~1.5u builder-werk via gedeelde
|
|
|
+Chrome-browserautomatisering, na expliciete toestemming in de chat):**
|
|
|
+drie taken opgepakt, alle drie bevestigd via verse export + gerichte
|
|
|
+`flutter analyze` (0 errors, alleen bestaande info/warning-lints).
|
|
|
+1. **P1-25 afgerond** — RenderFlex-overflow op
|
|
|
+ `home_uitgaantabel_kaart_component_widget.dart:359` bleek de
|
|
|
+ `plaats`-Text te zijn die als enige van 4 buurvelden geen
|
|
|
+ `maxLines: 1` had; nu gefixt.
|
|
|
+2. **P1-24 grotendeels afgerond** — `PUitgaanSliderKaartComponent`'s
|
|
|
+ ongeguarde `Image.network` kreeg een ConditionalBuilder-guard
|
|
|
+ (`logo != ''`). **Nieuwe bouwtechniek gevonden** (nu in `CLAUDE.md`):
|
|
|
+ een letterlijke lege-string-Second-Value op een Single Condition is
|
|
|
+ wél bereikbaar voor een String/Image-Path-component-parameter (eerder
|
|
|
+ ten onrechte als "onmogelijk" gedocumenteerd voor het losstaande
|
|
|
+ Json-Path-geval van `HomeUitgaantabelKaartComponent`, dat blijft
|
|
|
+ open, zie P1-24 hieronder). **Bijvangst:** de "Component Name kan
|
|
|
+ per ongeluk overschreven worden"-valkuil uit `CLAUDE.md` deed zich
|
|
|
+ opnieuw voor (typen in de zoekbalk landde in het Component
|
|
|
+ Name-veld) — meteen hersteld, geen blijvende schade.
|
|
|
+3. **P2-12 gedeeltelijk afgerond** — laad-placeholder via FlutterFlow's
|
|
|
+ "Use Blur Hash"-toggle + een vaste neutrale hash-string (nieuw
|
|
|
+ recept, zie `CLAUDE.md`), toegepast op 3 van de ~9 live
|
|
|
+ `CachedNetworkImage`-plekken (horeca-overzichtskaart, Home-kaart,
|
|
|
+ horeca-detail-fotocarousel) — resterende plekken staan genoteerd bij
|
|
|
+ P2-12.
|
|
|
+**Nog te doen bij sessie-afsluiting:** een live `ff-run-fvm.sh`-build
|
|
|
+liep nog op de achtergrond toen deze sessie de documentatie afrondde —
|
|
|
+check bij een volgende sessie of die build/launch succesvol was
|
|
|
+(`journalctl`/emulator-status), was niet meer af te wachten binnen dit
|
|
|
+tijdsblok.
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+**Vorige sessie (2026-08-21, sessie 42, ~1-2u builder-werk +
|
|
|
live-emulatoronderzoek via gedeelde Chrome-browserautomatisering +
|
|
|
`mcp__android__*`, na expliciete toestemming in de chat):** twee
|
|
|
builder-taken afgerond, plus stale-documentatie gecorrigeerd, plus
|
|
|
@@ -929,122 +962,90 @@ 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: Claude — bezig (sessie 43, alleen het resterende
|
|
|
-`PUitgaanSliderKaartComponent`-deel, 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
|
|
|
-exceptie nog steeds meteen op:
|
|
|
-```
|
|
|
-EXCEPTION CAUGHT BY IMAGE RESOURCE SERVICE
|
|
|
-ArgumentError: Invalid argument(s): No host specified in URI
|
|
|
-Image provider: CachedNetworkImageProvider("", scale: 1.0)
|
|
|
-```
|
|
|
-— een lege string, niet een kapotte URL. **Bevestigd via curl op
|
|
|
-`services_1`/`services_3` (Home-slider resp. Uitgaan-tab):** content-item
|
|
|
-**nid 214339 "RUE. Mini Zomerfestival 2 (The Action)"** heeft een
|
|
|
-daadwerkelijk **leeg `logo`-veld** in Drupal, en verschijnt in meerdere
|
|
|
-Home-secties tegelijk. Dit raakt **twee** widgets, allebei met een
|
|
|
-onvoldoende/ontbrekende guard (zelfde bekende `CachedNetworkImage`-patroon
|
|
|
-uit `CLAUDE.md`, maar dit keer met een guard die net niet ver genoeg gaat):
|
|
|
-1. [p_uitgaan_slider_kaart_component_widget.dart:147-148](lib/uitgaanspaginas/p_uitgaan_slider_kaart_component/p_uitgaan_slider_kaart_component_widget.dart:147) —
|
|
|
- `Image.network(widget!.logo!, ...)`, **helemaal geen guard** (niet
|
|
|
- eens een null-check).
|
|
|
-2. [home_uitgaantabel_kaart_component_widget.dart:246-259](lib/uitgaanspaginas/home_uitgaantabel_kaart_component/home_uitgaantabel_kaart_component_widget.dart:246) —
|
|
|
- guard is `if (getJsonField(evenementenItem, r'''$.logo''') != null)`,
|
|
|
- **checkt alleen op `null`, niet op lege string** — bij een leeg
|
|
|
- (maar aanwezig) veld faalt de guard niet, en `CachedNetworkImage`
|
|
|
- krijgt alsnog `''`.
|
|
|
-**Fix:** beide guards uitbreiden naar "Is Set and Not Empty"
|
|
|
-(zelfde recept als elders in `CLAUDE.md` — bij widget 2 de conditie
|
|
|
-aanvullen met een lege-string-check, bij widget 1 een nieuwe
|
|
|
-ConditionalBuilder/guard toevoegen, eventueel met de "image not
|
|
|
-supported"-Icon-ELSE-tak zoals het bestaande patroon). **Impact
|
|
|
-lager dan gedacht:** de app crasht hier niet hard op — Flutter's
|
|
|
-Image Resource Service vangt de exceptie zelf op en toont een
|
|
|
-fallback-icoon (het zwarte grijns-icoon zichtbaar op de "OOK
|
|
|
-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).
|
|
|
-
|
|
|
-**⚠️ 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.
|
|
|
+**P1-24 · Eigenaar: Bob — laatste restpunt geblokkeerd op een echte
|
|
|
+FlutterFlow-operatorbeperking (zie hieronder), niet Claude-oplosbaar.**
|
|
|
+**Root cause:** content-item **nid 214339** heeft een daadwerkelijk
|
|
|
+**leeg `logo`-veld** in Drupal en verschijnt in meerdere Home-secties —
|
|
|
+raakte 2 widgets met een `CachedNetworkImage`/`Image.network` zonder
|
|
|
+(voldoende) leeg-string-guard.
|
|
|
+- *(`p_uitgaan_slider_kaart_component_widget.dart`'s `Image.network`
|
|
|
+ — **afgerond 2026-08-21, sessie 43, Claude, builder + verse export
|
|
|
+ bevestigd:** Wrap Widget → ConditionalBuilder, IF `logo != ''`
|
|
|
+ (Single Condition, First Value = rauwe `logo`-component-parameter,
|
|
|
+ operator "Not Equal To", Second Value = **letterlijke lege string**
|
|
|
+ — zie de nieuwe `CLAUDE.md`-notitie over hoe je dat literal-tekstveld
|
|
|
+ bereikt, dat bleek eerder onterecht "onmogelijk" gedocumenteerd voor
|
|
|
+ Json-typed bindingen maar werkt gewoon voor een String/Image-Path-
|
|
|
+ component-parameter). THEN = bestaande Image, ELSE = Icon
|
|
|
+ `image_not_supported`. Bevestigd via verse export:
|
|
|
+ `if (widget!.logo != '') { Image.network(widget!.logo!, ...) } else
|
|
|
+ { Icon(Icons.image_not_supported, ...) }` in
|
|
|
+ `p_uitgaan_slider_kaart_component_widget.dart:144-165`.)*
|
|
|
+- **`home_uitgaantabel_kaart_component_widget.dart`'s guard (regel
|
|
|
+ ~244-248) blijft open** — deze First Value is gebonden via **JSON
|
|
|
+ Path** (`$.logo`, type "Json"), en dat type biedt geen "Is Set and
|
|
|
+ Not Empty"-operator **en** geen letterlijke-tekst-Second-Value (de
|
|
|
+ literal-Value-truc hierboven werkt alleen bij een directe String/
|
|
|
+ Image-Path-parameter, niet bij een Json-Path-binding op een raw
|
|
|
+ loop-item — bevestigd, zie de uitgebreide poging-documentatie
|
|
|
+ hieronder). [HomeUitgaantabelKaartComponent](https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=widgetTree&component=HomeUitgaantabelKaartComponent) →
|
|
|
+ `ConditionalBuilder` (in Stack, boven `Wrap`/`tagCategorieCompo...`)
|
|
|
+ → IF-pill "`$.logo is set`" ombuigen naar "ook niet-leeg" — Bob kan
|
|
|
+ dit proberen in zijn eigen browser (mogelijk zonder de
|
|
|
+ clipping/freeze-problemen die Claude tegenkwam), of contact met
|
|
|
+ FlutterFlow-support over deze operator-beperking op Json-typed
|
|
|
+ bindingen. **Impact lager dan gedacht:** geen harde crash — Flutter's
|
|
|
+ Image Resource Service vangt de exceptie zelf op en toont een
|
|
|
+ fallback-icoon (zwart grijns-icoon op de "OOK LEUK"-kaart) i.p.v. de
|
|
|
+ app te laten crashen. Wel een echte visuele bug + een burst van
|
|
|
+ ~40-65 "Failed to decode image"-regels in logcat per page-load (zie
|
|
|
+ de kanttekening bij P1-25 hieronder).
|
|
|
+
|
|
|
+**⚠️ Uitgebreide poging-documentatie (2026-08-21, sessie 42, ~45 min,
|
|
|
+alleen op `home_uitgaantabel_kaart_component_widget.dart`).** Het
|
|
|
+probleem: First Value gebonden via **JSON Path** (`$.logo`, type
|
|
|
+"Json") — 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". Geprobeerd en allemaal doodgelopen:
|
|
|
+- Een 2e conditie toevoegen (AND, `$.logo != ''`) — de First Value liet
|
|
|
+ zich wel op `$.logo` binden, maar de Second Value-picker bood **op
|
|
|
+ dat moment** geen manier om een letterlijke lege string in te vullen
|
|
|
+ (alleen een variabele-bronkiezer, geen "literal"-optie zichtbaar).
|
|
|
+ **Correctie 2026-08-21 sessie 43:** dit bleek specifiek voor Json-
|
|
|
+ typed First Values te gelden — bij een directe String/Image-Path-
|
|
|
+ component-parameter (zie `PUitgaanSliderKaartComponent` hierboven)
|
|
|
+ bestaat er wél een literal-tekstveld, alleen verstopt achter een
|
|
|
+ paar extra kliks (zie de nieuwe `CLAUDE.md`-notitie).
|
|
|
- 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
|
|
|
+ "JSON Path" — `evenementenItem` heeft geen gekoppeld Custom Data
|
|
|
+ Type/schema (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.
|
|
|
+- Een "empty"/"length"-transform zoeken onder de JSON-Path-binding's
|
|
|
+ eigen 2e "Available Options"-dropdown — alleen "To Data Type" (wijst
|
|
|
+ naar custom models) en "No Further Changes" beschikbaar.
|
|
|
- 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: Claude — bezig (sessie 43, code-only verkenning).**
|
|
|
-Nieuwe RenderFlex-overflow gevonden
|
|
|
-2026-08-15 (Claude, live launch emulator-5554): "A RenderFlex
|
|
|
-overflowed by 129 pixels on the bottom", `Column`, in
|
|
|
-`lib/uitgaanspaginas/home_uitgaantabel_kaart_component/home_uitgaantabel_kaart_component_widget.dart:359`.
|
|
|
-**Onderzoek 2026-08-21 (Claude, sessie 42) niet afgerond — geen
|
|
|
-stack trace gevangen, wel een verontrustende bijvangst.** Na de
|
|
|
-P0-9-fix kon Home's "Uitgaan"-tab op emulator-5554 niet meer verder
|
|
|
-gescrold worden (swipe via zowel `mcp__android__swipe` als een kale
|
|
|
-`adb shell input swipe` had zichtbaar **geen enkel effect**, drie
|
|
|
-pogingen), dus P1-25's kaart (verderop in de lijst) kon niet bereikt
|
|
|
-worden om een verse dump te vangen. **Vlak daarna crashte
|
|
|
-`emulator-5554` zelf** (systemd: `Main process exited, code=dumped,
|
|
|
-signal=SEGV`, geheugen piekte naar **20GB** vlak vóór de crash — zie
|
|
|
-`journalctl --user -u android-emulator.service`). Volgorde: launch →
|
|
|
-(swipe werkt niet) → burst van tientallen "Failed to decode
|
|
|
-image"-fouten (zie P1-24) → emulator-crash. **Mogelijk verband tussen
|
|
|
-P1-24's herhaalde mislukte image-decodes en deze geheugenpiek/crash
|
|
|
-is niet bevestigd** (kan ook toeval/emulator-instabiliteit zijn, zie
|
|
|
-Bob's eigen ervaring dat deze AVD's af en toe uitvallen), maar de
|
|
|
-timing is verdacht genoeg om te vermelden. **Volgende stap:** eerst
|
|
|
-P1-24 fixen (goedkoop, mechanisch), daarna dit opnieuw proberen — als
|
|
|
-de scroll dan wél werkt en de emulator stabiel blijft, bevestigt dat
|
|
|
-het verband; zo niet, dan is P1-25 nog steeds een apart, ongevonden
|
|
|
-probleem.
|
|
|
+ herladen na een vastgelopen geneste "Set Variable"-dialoog — **geen
|
|
|
+ schade**, elke keer teruggezet naar de oorspronkelijke werkende
|
|
|
+ conditie.
|
|
|
+
|
|
|
+*(P1-25 afgerond 2026-08-21, sessie 43 — Claude, code-audit + builder,
|
|
|
+bevestigd via verse export. Root cause gevonden zonder live emulator
|
|
|
+nodig te hebben (dus het emulator-crash-risico uit de vorige sessie
|
|
|
+was hier niet relevant): in de Column op
|
|
|
+`home_uitgaantabel_kaart_component_widget.dart:359` hadden 4 van de 5
|
|
|
+tekstregels al `maxLines: 1`/`overflow: ellipsis` — **de `plaats`-Text
|
|
|
+(toen regel ~549-581) was de enige zonder**, en kon bij een lange
|
|
|
+plaatsnaam over meerdere regels wrappen, waardoor de vaste rijen samen
|
|
|
+de vaste kaarthoogte (160-280px afhankelijk van breakpoint)
|
|
|
+overschreden. Fix: `maxLines: 1` gezet via de "Search properties"-
|
|
|
+zoekbalk (→ "max lines"), zelfde guard-patroon als de buurvelden.
|
|
|
+Bevestigd via verse export: `maxLines: 1` staat nu op de `plaats`-Text.
|
|
|
+Geen expliciete `overflow: ellipsis` gezet — dat veld
|
|
|
+("Text Overflow Replacement") bleek buiten de klikbare
|
|
|
+viewport te renderen (bekende clipping, zie CLAUDE.md), maar
|
|
|
+`maxLines: 1` alleen volstaat al om de RenderFlex-overflow te
|
|
|
+voorkomen (voorkomt de layout-overschrijding, ook zonder ellipsis-
|
|
|
+teken). Uit deze lijst verwijderd.)*
|
|
|
|
|
|
**P1-16 · Eigenaar: Bob (Firebase-koppeling is account-/builder-niveau,
|
|
|
geen Claude-taak).** Geen crash-reporting/analytics (bv. Firebase
|
|
|
@@ -2182,17 +2183,43 @@ niet-uitgevoerde vervolgstappen — zie de oorspronkelijke analyse in de
|
|
|
sessiegeschiedenis als dat ooit weer relevant wordt. Uit deze lijst
|
|
|
verwijderd.)*
|
|
|
|
|
|
-**P2-12 · Eigenaar: Claude — bezig (sessie 43).** Geen laad-placeholder/skeleton bij
|
|
|
+**P2-12 · Eigenaar: Claude/Onbepaald — gedeeltelijk afgerond sessie 43,
|
|
|
+resterende plekken hieronder.** Geen laad-placeholder/skeleton bij
|
|
|
afbeeldingen (carousel-kaarten, horeca-logo's) — gezien 2026-08-20 op
|
|
|
zowel telefoon als tablet: een kaart toont eerst een lege witte vlek,
|
|
|
en pas 1-2 seconden later verschijnt de venue-foto/het logo (bv. het
|
|
|
Fluor33-logo op Home's carousel). Geen crash/bug (bevestigd: uiteindelijk
|
|
|
laadt de juiste afbeelding altijd), maar oogt bij een trage verbinding
|
|
|
-als een kapotte/lege kaart. Kleine polish: een `Shimmer`/grijze
|
|
|
-placeholder-`Container` op de `CachedNetworkImage`'s `placeholder:`
|
|
|
-(vergelijkbaar met het al bestaande "image not supported"-ELSE-patroon
|
|
|
-uit de CLAUDE.md-notitie over lege `imageUrl`'s, maar dan voor de
|
|
|
-laadfase i.p.v. de foutfase).
|
|
|
+als een kapotte/lege kaart.
|
|
|
+
|
|
|
+**Werkend recept gevonden (2026-08-21, sessie 43, Claude, builder):**
|
|
|
+niet via een handmatige `Shimmer`/`Container`-wrap (geen los
|
|
|
+"Placeholder"-veld beschikbaar op FlutterFlow's Image-widget), maar via
|
|
|
+de bestaande **"Use Blur Hash"**-toggle (Image-widget → rechterpaneel →
|
|
|
+zoek "blur") + een **vaste, algemene Blur Hash String**
|
|
|
+(`L6PZfSi_.AyE_3t7t7R**0o#DgR4` — een neutrale grijze placeholder-hash,
|
|
|
+niet gekoppeld aan de echte foto, want dit project heeft geen
|
|
|
+per-afbeelding blurhash-data uit Drupal). Genereert automatisch een
|
|
|
+`OctoImage` met `placeholderBuilder: (_) => Image(image:
|
|
|
+BlurHashImage('...'), fit: BoxFit.cover)` rond de bestaande
|
|
|
+`CachedNetworkImageProvider` — geen widget-tree-wijziging nodig, puur
|
|
|
+2 property-velden op de bestaande Image-node. **Val op:** het
|
|
|
+tekstveld verschijnt pas ná de eerste klik op de toggle en moet
|
|
|
+soms 2x aangeklikt/getypt worden vóór de tekst blijft staan (zelfde
|
|
|
+"ziet er leeg uit, moet nogmaals"-patroon als elders in CLAUDE.md) —
|
|
|
+altijd verifiëren via een verse export dat de string niet leeg bleef.
|
|
|
+**Toegepast en bevestigd (verse export, 3 plekken):**
|
|
|
+`horecagelegenheidoverzicht_kaart_widget.dart` (hoofdoverzichtskaart),
|
|
|
+`home_uitgaantabel_kaart_component_widget.dart` (Home-kaart),
|
|
|
+`horecagelegenheid_current_widget.dart` (foto-carousel op de
|
|
|
+detailpagina).
|
|
|
+
|
|
|
+**Resterende plekken (zelfde 2-klikken-recept, niet meer gedaan wegens
|
|
|
+tijd deze sessie):** `event_current_widget.dart`,
|
|
|
+`evenement_component_widget.dart`, `evenement_horecagelegenheid_widget.dart`,
|
|
|
+`horecagelegenheid_event_tabel_component_copy_widget.dart`,
|
|
|
+`uitgaantabel_kaart_widget.dart`/`uitgaantabel_kaart_component_widget.dart`
|
|
|
+(laatste is mogelijk de bevestigd dode P2-7-orphan, dan niet nodig).
|
|
|
|
|
|
**P2-13 · Eigenaar: Bob (Drupal-theme, geen FlutterFlow/Claude-taak —
|
|
|
puur advies, niet uitgevoerd).** Op Bob's vraag (2026-08-21) ook de
|