瀏覽代碼

P2-14: googleMapsUrl + GoogleMapsIconButton gebouwd en bevestigd, plaatsing op pagina's overgedragen aan Bob

- Custom Function googleMapsUrl(adres, plaats) en Project Component
  GoogleMapsIconButton (2 params, Launch URL on tap) volledig gebouwd
  en bevestigd via verse export
- Component plaatsen op horecagelegenheid_current/event_current lukt
  niet via canvas-drag: een 200x200px logo-Image overlapt/overflowt
  de hele Info-tab-Column visueel, waardoor elke drop op die plek de
  Image raakt ("does not accept children") of een compleet andere
  component elders in de tree - 10+ pogingen, geen werkende omweg
  gevonden. Exacte stappen voor Bob genoteerd in TASKS.md.
- Nieuw CLAUDE.md-patroon vastgelegd: fixed-size overflow-widgets
  kunnen canvas-drop-targeting structureel breken

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
bob 2 周之前
父節點
當前提交
9b64f6f44b
共有 2 個文件被更改,包括 73 次插入1 次删除
  1. 27 0
      CLAUDE.md
  2. 46 1
      TASKS.md

+ 27 - 0
CLAUDE.md

@@ -473,6 +473,33 @@ dat al bevestigd werkt.
 
 ## FlutterFlow-builder: bekende problemen & patronen
 
+**Een Project Component naar een specifieke plek in de Widget Tree
+slepen (canvas-dropzone, zie het bestaande recept elders in dit
+bestand) kan structureel mislukken als een fixed-size kind-widget
+(bv. een 200×200px `Image`) de rest van zijn ouder-`Column` visueel
+overlapt/overflowt.** Bevestigd 2026-08-25 (P2-14,
+`horecagelegenheid_current_widget.dart`): de Info-tab-Column
+(`Image` + `Text-adres`/`Text-plaats`/... eronder) rendert in
+design-time zo dat de vaste 200×200px logo-`Image` de hele Column
+overdekt, ook het stuk waar de tekstregels eronder eigenlijk staan —
+een sleep-drop op die coördinaten target daardoor altijd de `Image`
+zelf ("Image does not accept children"-toast) in plaats van de
+Column. Erger: soms landt de drop zelfs op een totaal andere,
+elders-in-de-tree-liggende component die toevallig dezelfde
+canvas-coördinaten inneemt (design-time-overlap, geen echte
+nesting-relatie) — bevestigd via een expliciete tree-selectie die
+een heel ander component-type toonde dan verwacht op exact dezelfde
+pixel. **10+ pogingen met verschillende zoomniveaus (90%/150%) en
+doelcoördinaten gaven telkens hetzelfde resultaat** — dit is dus geen
+"net iets anders mikken"-probleem maar een structurele
+canvas-hit-testing-beperking bij overlappende/overflowende widgets.
+**Geen werkende omweg gevonden** (Insert-Widget-dialoog op de
+Column zelf toont geen Project Components, alleen kale
+basis-widgets). Bij dit patroon: niet blijven proberen, teruggeven
+aan Bob met de exacte Widget-Tree-locatie (component + parameter-
+bindings) — in zijn eigen browser ziet hij gewoon waar hij klikt,
+geen coördinaat-giswerk nodig.
+
 **Een pagina kan in een staat komen waarin de builder élke wijziging
 weigert met een generieke "Invalid Action: The most recent action
 would have caused a crashing error, so we've undone it for you"-toast

+ 46 - 1
TASKS.md

@@ -2183,7 +2183,52 @@ deep-link):
    een mogelijk later te herzien punt, **geen actie nu, geen onderdeel
    van P2-14** — apart laten staan tot Bob besluit of/hoe dit anders
    moet.
-**Akkoord van Bob (2026-08-25) om nu te starten** — geen blocker meer.
+
+**Voortgang (2026-08-25, Claude, builder):**
+- **Stap 1 + 2 volledig afgerond en bevestigd via verse export:**
+  Custom Function `googleMapsUrl(String adres, String plaats)` staat in
+  `lib/flutter_flow/custom_functions.dart` (bouwt de Universal-URL-string
+  zoals gepland). Project Component `GoogleMapsIconButton`
+  (`lib/components/google_maps_icon_button_widget.dart`) bestaat, met
+  de twee verplichte String-parameters (`adres`, `plaats`) en een
+  werkende On Tap-actie: `launchURL(functions.googleMapsUrl(widget!.adres!,
+  widget!.plaats!))` — geverifieerd in de geëxporteerde code.
+- **Stap 3 (component invoegen op de 2 pagina's): geblokkeerd voor
+  Claude, nog niet gedaan — nodig van Bob, kost hooguit een paar
+  minuten in zijn eigen browser.** Op
+  `horecagelegenheid_current_widget.dart` overlapt de vaste 200×200px
+  logo-`Image` (eerste kind van de Info-tab-Column met adres/plaats/
+  telefoon/email/kvk) visueel de hele Column inclusief de tekstregels
+  eronder — elke sleep-poging (Project Components-paneel → canvas) op
+  die plek landt daardoor altijd óf op die `Image` ("Image does not
+  accept children") óf op een compleet andere, elders-in-de-tree
+  liggende component die toevallig dezelfde canvas-coördinaten inneemt
+  in de design-time preview. 10+ pogingen met verschillende
+  zoomniveaus/doelcoördinaten, telkens hetzelfde resultaat — dit is
+  geen kwestie van een net iets andere pixel proberen, zie de nieuwe
+  `CLAUDE.md`-notitie hieronder.
+- **Exacte stappen voor Bob (in eigen browser, geen last van dit
+  coördinaat-probleem):**
+  1. Open `horecagelegenheid_current_widget.dart` → Widget Tree →
+     navigeer naar `TabBar → Tab-info → TabBar Page → Row → Column`
+     (bevat `Image`, `Text-adres`, `Text-plaats`, `Text-telefoon`,
+     `Text-email`, `Text-kvk`, `Wrap`).
+  2. Linker paneel → **Project Components** (diamant-icoontje) → zoek
+     `GoogleMapsIconButton` → sleep de kaart naar de canvas, direct
+     onder/naast `Text-adres` of `Text-plaats` (of: rechtsklik
+     `Text-plaats` in de Widget Tree → **Insert Widget** lukt niet voor
+     custom components, dus toch via de sleep-route, maar dan gewoon
+     zelf op de juiste plek klikken — geen coördinaat-giswerk nodig als
+     je het zelf ziet).
+  3. Component selecteren → rechterpaneel **Component Parameters**:
+     `adres` → Set from Variable → zelfde bron/JSON Path als
+     `Text-adres` gebruikt (`EstablishmentInfo Response`, JSON Path
+     `$[:].adres`); `plaats` → zelfde patroon met `$[:].plaats`.
+  4. Zelfde 2 stappen herhalen op `event_current_widget.dart` (naast
+     het adres-`Text`-widget daar — exacte JSON-paths ter plekke
+     checken, waarschijnlijk vergelijkbaar patroon).
+  5. Verse export + `flutter analyze` om te bevestigen dat
+     `GoogleMapsIconButtonWidget` nu op beide widgets voorkomt.
 
 **P2-7 · Eigenaar: Bob.** Opschonen:
 - Merge `kaartTabelUitgaanComp` + `kaartTabelUitgaanSComp` — Bob doet