|
|
@@ -2169,90 +2169,19 @@ dus ook een complete dataset vereist.
|
|
|
beperking uit `CLAUDE.md` (geen Tooltip nodig, gewoon een losse
|
|
|
`onTap` die `zoekterm` leegt).
|
|
|
|
|
|
-**P2-14 · Eigenaar: Claude (nieuw, 2026-08-25, Bob's idee).**
|
|
|
-Google Maps-icoon achter elk adres — bij horecagelegenheid-,
|
|
|
-stadsactiviteit- en uitgaansevenement-detailpagina's, tikken opent
|
|
|
-Google Maps (native app indien geïnstalleerd, anders browser) met
|
|
|
-het adres + plaats voorgevuld. Bob's eigen suggestie: als **losse
|
|
|
-herbruikbare Project Component** bouwen, niet per pagina dupliceren.
|
|
|
-**Bouwplan — geen Google Maps API-key/billing nodig** (dat is alleen
|
|
|
-voor een ingesloten kaart-weergave zoals P2-2, niet voor een simpele
|
|
|
-deep-link):
|
|
|
-1. Nieuwe **Custom Function** `googleMapsUrl(String adres, String
|
|
|
- plaats) -> String`, bouwt
|
|
|
- `https://www.google.com/maps/search/?api=1&query=' +
|
|
|
- Uri.encodeComponent('$adres, $plaats')` — dit is Google's
|
|
|
- "Universal URL"-formaat: opent de native app op iOS/Android als die
|
|
|
- geïnstalleerd is, valt anders terug op de browser-versie, werkt
|
|
|
- zonder eigen API-key.
|
|
|
-2. Nieuwe **Project Component** `GoogleMapsIconButton` met twee String-
|
|
|
- parameters (`adres`, `plaats`): een `Icon` (bv.
|
|
|
- `Icons.location_on_outlined` of `Icons.map_outlined`) → On Tap →
|
|
|
- **Launch URL** (categorie "Share", zie `CLAUDE.md`) → Value via Set
|
|
|
- from Variable → Custom Functions → `googleMapsUrl` met beide
|
|
|
- parameters gebonden.
|
|
|
-3. **Paginascope bevestigd (Bob, 2026-08-25): stadsactiviteit deelt
|
|
|
- dezelfde detailpagina als uitgaansevenement** (`EventCurrent`/
|
|
|
- `event_current_widget.dart`) — de onderliggende query voor die
|
|
|
- pagina levert al zowel `activity`- als `go_out_event`-nodes uniform
|
|
|
- op, dus 1 component-plek dekt beide. **Dus 2 plekken totaal:**
|
|
|
- `horecagelegenheid_current_widget.dart` en
|
|
|
- `event_current_widget.dart` (naast/achter het bestaande
|
|
|
- adres-`Text`-widget op elk).
|
|
|
-4. **Bijvangst, genoteerd voor later (Bob, 2026-08-25): op
|
|
|
- `EventCurrent` ontbreekt momenteel het "horecagelegenheid"-blok**
|
|
|
- (de gekoppelde-horeca-sectie die op een echt evenement getoond
|
|
|
- wordt) voor stadsactiviteiten — logisch, want een activiteit heeft
|
|
|
- geen gekoppelde horecagelegenheid in het datamodel. Bob noemt dit
|
|
|
- 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.
|
|
|
-
|
|
|
-**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-14 volledig afgerond 2026-08-25 — Custom Function `googleMapsUrl`
|
|
|
++ Project Component `GoogleMapsIconButton` gebouwd door Claude, op
|
|
|
+beide pagina's (`horecagelegenheid_current_widget.dart`,
|
|
|
+`event_current_widget.dart`) geplaatst door Bob (canvas-drag lukte
|
|
|
+niet via automation, zie het `CLAUDE.md`-patroon over overlappende/
|
|
|
+overflowende widgets — Bob deed de laatste stap zelf in enkele
|
|
|
+minuten). Bevestigd via verse export: `GoogleMapsIconButtonWidget` op
|
|
|
+beide widgets, `adres`/`plaats` correct gebonden aan dezelfde bron als
|
|
|
+de bestaande adres-tekst (`EstablishmentInfoCall.establishmentAdres/
|
|
|
+establishmentPlaats` resp. `EvenementCall.eventAdres/eventPlaats`),
|
|
|
+`flutter analyze` geen nieuwe errors. Bijvangst-punt (ontbrekend
|
|
|
+horeca-blok bij stadsactiviteiten op `EventCurrent`) blijft bewust
|
|
|
+liggen tot Bob erop terugkomt — geen eigen taak-ID.)*
|
|
|
|
|
|
**P2-7 · Eigenaar: Bob.** Opschonen:
|
|
|
- Merge `kaartTabelUitgaanComp` + `kaartTabelUitgaanSComp` — Bob doet
|