Переглянути джерело

Taken 92 en 93: P-Uitgaan-kaart en -slider gelijkgetrokken met Home

92 - UitgaantabelKaart had nergens een maxLines, waardoor de omschrijving
op elk formaat op een regel werd afgekapt (zelfde bug als taak 91, ander
component). Kaarthoogtes zijn identiek aan Home, dus dezelfde waarden:
Max Lines responsive 2/4/6/8 op de omschrijving, en 1 op titel, zaak,
adres, plaats en datum.

93 - de P-Uitgaan-slider stond op 180/220/260/300 terwijl Home op 4x 240
staat. Beide sliders gebruiken dezelfde kaart, en die is op 2026-09-17
juist voor 240 gefixt; 180 op de telefoon was dus een open
overflow-risico. Nu gelijk aan Home.

Export-geverifieerd: 5x maxLines 1, de vier responsive takken 2/4/6/8,
geen lege tak, en 4x 240 op de carousel.

TASKS.md: taken 92 t/m 97 aangemaakt, met daarin ook Bobs besluiten over
de AdBanner en het zoekveld, plus de navigatiestructuur die uitlegt dat
"Gemeente" en "Provincie" menu-secties zijn die deels dezelfde pagina delen.

Alleen deze twee componenten zijn gecommit; het datum-zoekveld dat een
andere sessie op home bouwt blijft bewust ongecommit.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
bob 10 годин тому
батько
коміт
3ed88e8b8e

+ 87 - 0
TASKS.md

@@ -38,6 +38,20 @@ klopt sinds je 'm las.*
    gemaakt en kan weg zodra hij tevreden is. Rechtsklik in de componentlijst →
    *Delete Component*. Hij wordt nergens gebruikt, dus dit raakt geen pagina.
    (Claude verwijdert zelf nooit iets — staande regel.)
+9. **92 · omschrijvingstekst afgekapt op ÉÉN regel op de P-Uitgaan-kaart ·
+   Eigenaar: Claude — bezig (2026-09-18).** Zelfde bug als taak 91 op Home, maar
+   in het andere kaartcomponent. Zie blok verderop.
+10. **93 · P-Uitgaan-slider heeft een andere hoogte dan Home · Eigenaar: Claude
+    — bezig (2026-09-18).** 180/220/260/300 i.p.v. 4× 240. Zie blok verderop.
+11. **94 · P-Uitgaan toont op een tablet ÉÉN kolom** waar Home er drie toont —
+    `PagedListView` i.p.v. `StaggeredView`. Zie blok verderop.
+12. **95 · geen Empty List Widget** op P-Uitgaan en op de 6 provincie-horeca-tabs.
+    Zie blok verderop.
+13. **96 · AdBanner op de horeca-overzichten** (gemeente + provincie) — besluit
+    Bob 2026-09-18. Zie blok verderop, inclusief één openstaande scope-vraag.
+14. **97 · zoekveld ook op de provincie-horeca-pagina** — besluit Bob 2026-09-18.
+    Zie blok verderop.
+
 8. **91 · uitleg op de aanmaakpagina's** (evenement + activiteit) — nieuw
    2026-09-18 op Bob's vraag. Teksten NL+EN staan kant-en-klaar in het blok
    hieronder; alleen nog plaatsen in de builder. Pak dit samen met taak 87 op,
@@ -6390,3 +6404,76 @@ kranten-uitstraling.
 
 
 
+
+### 92 t/m 97 · Home, P-Uitgaan en de twee horeca-overzichten gelijktrekken
+
+*Aangemaakt 2026-09-18 na een vergelijking van de opmaak van Home, P-Uitgaan en
+de twee horeca-overzichten (alleen gelezen, niets gewijzigd).*
+
+**Eerst de navigatiestructuur, want zonder dit lees je de taken verkeerd.**
+"Gemeente" en "Provincie" zijn **menu-secties in `drawerComponent`, geen twee
+aparte pagina's**. Ze wijzen deels naar dezelfde pagina met een andere
+`plaats`-parameter:
+
+| menu-item | Gemeente-sectie | Provincie-sectie |
+|---|---|---|
+| Uitgaan / Activiteiten / Cultuur / Films / Jeugd | `PUitgaanPage` (`plaats` = `gemeenteSelectId`) | **dezelfde** `PUitgaanPage` (`plaats` = `provincieSelectId`) |
+| Horeca | `HorecagelegenhedenOverzichtCurrent` | `HorecagelegenhedenOverzichtProvinciePage` |
+| Thuis bezorgen | `ThuisBezorgen` | — |
+
+Gevolg: een wijziging op `PUitgaanPage` raakt **automatisch zowel gemeente als
+provincie**. Alleen bij horeca zijn het echt twee losse pagina's.
+
+**92 · omschrijving afgekapt op één regel (P-Uitgaan-kaart).** In
+`lib/uitgaanspaginas/uitgaantabel_kaart/uitgaantabel_kaart_widget.dart` staat de
+omschrijving als `Expanded > Text(overflow: ellipsis)` **zonder `maxLines`** —
+exact de bug van taak 91, in het andere kaartcomponent. Dat component heeft
+**nul** `maxLines` in het hele bestand, dus ook titel/adres/datum kunnen wrappen
+(op Home staan die op 1). Kaarthoogtes zijn identiek aan Home
+(160/200/240/280), dus de gemeten waarden van taak 91 gelden hier één op één:
+**Max Lines als Responsive Value 2 / 4 / 6 / 8** op de `inhoud`-Text, plus
+**Max Lines 1** op titel, adres en datum.
+
+**93 · slider-hoogte wijkt af van Home.**
+`p_uitgaan_slider_component` staat op **180 / 220 / 260 / 300**, Home op **4×
+240**. Beide sliders gebruiken dezelfde kaart (`PUitgaanSliderKaartComponent`),
+en die is op 2026-09-17 juist gefixt voor 240 — 180 op de telefoon is dus een
+open overflow-risico. Zet 'm gelijk aan Home.
+
+**94 · P-Uitgaan toont op een tablet één kolom.**
+`p_uitgaantabel_kaart_component` gebruikt een `PagedListView`; Home en beide
+horeca-overzichten gebruiken een `PagedMasonryGridView` met Cross Axis Count
+1/1/2/3. Grootste zichtbare verschil, maar ook de grootste ingreep: volg het
+pagination-recept in `CLAUDE.md` (Infinite Scroll uit → `page`-binding
+verwijderen → Replace → StaggeredView → Infinite Scroll terug → `page` opnieuw
+binden aan *Next Page Index*), en let op Shrink Wrap + een begrensde hoogte.
+
+**95 · geen Empty List Widget.** Op `p_uitgaantabel_kaart_component` (0×) en op
+alle 6 tabs van `HorecagelegenhedenOverzichtProvinciePage` (0×, terwijl de
+gemeente-versie er 6 heeft). Bij een lege lijst zie je nu een leeg vlak zonder
+uitleg. Recept staat in `CLAUDE.md` (Empty List Widget → Image → Asset →
+`logo800px`, Center Image aan).
+
+**96 · AdBanner op de horeca-overzichten · besluit Bob 2026-09-18.**
+Nu staat er precies één `FlutterFlowAdBanner` in het project, op `PUitgaanPage`
+— die dus al zowel gemeente als provincie bedient. Toe te voegen op
+`HorecagelegenhedenOverzichtCurrent` en `HorecagelegenhedenOverzichtProvinciePage`.
+Gebruik dezelfde unit-id's als op `PUitgaanPage`
+(iOS `ca-app-pub-2431417692812232/5511582981`, Android `…/6657143691`) en
+dezelfde plaatsing (los blok met 15 px padding boven de lijst).
+⚠️ **Openstaande scope-vraag voor Bob:** hoort de banner ook op **Home** en op
+**ThuisBezorgen**? "Gemeente en provincie" sluit Home taalkundig uit (Home is de
+landelijke ingang), maar dat is een aanname — niet bouwen zonder antwoord.
+
+**97 · zoekveld ook op de provincie-horeca-pagina · besluit Bob 2026-09-18.**
+`HorecagelegenhedenOverzichtCurrent` heeft één `TextFormField` (zoekveld),
+`HorecagelegenhedenOverzichtProvinciePage` heeft er nul. Verder zijn die twee
+pagina's al gelijk (AppBar 80, 6 tabs, kolommen 1/1/2/3, `.take(100)`/`.take(1000)`
+identiek). Neem het zoekveld inclusief de filterketen over van de gemeente-versie.
+
+**Los restpunt (geen eigen nummer, klein):** `PUitgaanPage` zet
+`HeaderButtonsComponent` in de **`title`**-slot van de AppBar, terwijl élke
+andere pagina 'm in `flexibleSpace.background` heeft (dat is de norm volgens het
+headerrecept in `CLAUDE.md`). Ook staat zijn AppBar op `PreferredSize(50)` net
+als Home, terwijl de twee horeca-overzichten op 80 staan. Niet urgent, wel iets
+om mee te nemen zodra iemand toch aan die header zit.

+ 4 - 4
lib/uitgaanspaginas/p_uitgaan_slider_component/p_uitgaan_slider_component_widget.dart

@@ -183,15 +183,15 @@ class _PUitgaanSliderComponentWidgetState
                     width: double.infinity,
                     height: () {
                       if (MediaQuery.sizeOf(context).width < kBreakpointSmall) {
-                        return 180.0;
+                        return 240.0;
                       } else if (MediaQuery.sizeOf(context).width <
                           kBreakpointMedium) {
-                        return 220.0;
+                        return 240.0;
                       } else if (MediaQuery.sizeOf(context).width <
                           kBreakpointLarge) {
-                        return 260.0;
+                        return 240.0;
                       } else {
-                        return 300.0;
+                        return 240.0;
                       }
                     }(),
                     child: CarouselSlider.builder(

+ 21 - 0
lib/uitgaanspaginas/uitgaantabel_kaart/uitgaantabel_kaart_widget.dart

@@ -253,6 +253,7 @@ class _UitgaantabelKaartWidgetState extends State<UitgaantabelKaartWidget>
                                   0.0, 0.0, 0.0, 5.0),
                               child: AutoSizeText(
                                 widget!.titel!.toString(),
+                                maxLines: 1,
                                 style: FlutterFlowTheme.of(context)
                                     .bodyLarge
                                     .override(
@@ -291,6 +292,7 @@ class _UitgaantabelKaartWidgetState extends State<UitgaantabelKaartWidget>
                                 Flexible(
                                   child: Text(
                                     widget!.horecagelegenheid!.toString(),
+                                    maxLines: 1,
                                     style: FlutterFlowTheme.of(context)
                                         .bodySmall
                                         .override(
@@ -334,6 +336,7 @@ class _UitgaantabelKaartWidgetState extends State<UitgaantabelKaartWidget>
                                 Flexible(
                                   child: Text(
                                     widget!.adres!.toString(),
+                                    maxLines: 1,
                                     style: FlutterFlowTheme.of(context)
                                         .bodySmall
                                         .override(
@@ -387,6 +390,7 @@ class _UitgaantabelKaartWidgetState extends State<UitgaantabelKaartWidget>
                                 ),
                                 Text(
                                   widget!.plaats!.toString(),
+                                  maxLines: 1,
                                   style: FlutterFlowTheme.of(context)
                                       .bodySmall
                                       .override(
@@ -427,6 +431,7 @@ class _UitgaantabelKaartWidgetState extends State<UitgaantabelKaartWidget>
                                 Flexible(
                                   child: Text(
                                     widget!.datum!.toString(),
+                                    maxLines: 1,
                                     style: FlutterFlowTheme.of(context)
                                         .bodySmall
                                         .override(
@@ -461,6 +466,22 @@ class _UitgaantabelKaartWidgetState extends State<UitgaantabelKaartWidget>
                                     return Text(
                                       widget!.inhoud!.toString(),
                                       textAlign: TextAlign.start,
+                                      maxLines: () {
+                                        if (MediaQuery.sizeOf(context).width <
+                                            kBreakpointSmall) {
+                                          return 2;
+                                        } else if (MediaQuery.sizeOf(context)
+                                                .width <
+                                            kBreakpointMedium) {
+                                          return 4;
+                                        } else if (MediaQuery.sizeOf(context)
+                                                .width <
+                                            kBreakpointLarge) {
+                                          return 6;
+                                        } else {
+                                          return 8;
+                                        }
+                                      }(),
                                       style: FlutterFlowTheme.of(context)
                                           .bodySmall
                                           .override(