|
@@ -363,6 +363,129 @@ géén globe en geen EN-vertaling. Dat is een bewuste beperking.
|
|
|
aangemeld maar nooit op de bevestigingslink geklikt en krijgen dus niets. Geen
|
|
aangemeld maar nooit op de bevestigingslink geklikt en krijgen dus niets. Geen
|
|
|
app-probleem, wel het sterkste argument voor `confirm = FALSE` in de app.
|
|
app-probleem, wel het sterkste argument voor `confirm = FALSE` in de app.
|
|
|
|
|
|
|
|
|
|
+## 🧪 132 · Bevindingen uit de testronde van 2026-09-22 · Eigenaar: nader te bepalen
|
|
|
|
|
+
|
|
|
|
|
+Volledige doorloop op **emulator-5556 (telefoon, uitgelogd)** en **emulator-5554
|
|
|
|
|
+(tablet, ingelogd als bobcity)**, verse release-APK uit een eigen export.
|
|
|
|
|
+`dart analyze` gaf **0 errors**; er is geen enkele exception of overflow in
|
|
|
|
|
+`logcat` gevallen. Offline-gedrag, netwerkherstel, zoeken, datumfilters,
|
|
|
|
|
+categoriefilter, login-foutafhandeling en de nieuwsbrief-toggles werkten alle
|
|
|
|
|
+correct. Hieronder wat wél mis is, op volgorde van ernst.
|
|
|
|
|
+
|
|
|
|
|
+### 132-A · `HorecagelegenheidCurrent` scrollt niet — halve zaakpagina onbereikbaar
|
|
|
|
|
+
|
|
|
|
|
+Het bestand bevat **0 `SingleChildScrollView`**; de vier tabs zijn kale
|
|
|
|
|
+`Column`s in een `TabBarView`. Op een telefoon (411 dp) past daar ná de
|
|
|
|
|
+fotostrip, titel en tabbalk nog ongeveer één regel in, en de knop *Alle
|
|
|
|
|
+horecagelegenheden* dekt de rest af. Gemeten op BAUT ZUIDAS (nid 50954): van de
|
|
|
|
|
+Info-tab zijn **telefoonnummer, e-mail en de volledige "over"-tekst** niet te
|
|
|
|
|
+bereiken — de regel *Openingstijden …* wordt middendoor gesneden en er is geen
|
|
|
|
|
+scroll. Op tablet valt het minder op, maar het speelt daar ook.
|
|
|
|
|
+
|
|
|
|
|
+Fix: de Column van elke tab scrollbaar maken (let op het recept in `CLAUDE.md`:
|
|
|
|
|
+eerst elke `Expanded` eruit, anders weigert FlutterFlow het).
|
|
|
|
|
+
|
|
|
|
|
+### 132-B · Zoekterm lekt van Home naar `PUitgaanPage`, met een leeg zoekveld
|
|
|
|
|
+
|
|
|
|
|
+`FFAppState().zoekterm` is globaal, maar `FilterBalkComponent` maakt zijn
|
|
|
|
|
+`TextEditingController` in `initState` **leeg** aan
|
|
|
|
|
+(`_model.textController ??= TextEditingController()`, geen `..text = …`).
|
|
|
|
|
+Reproductie: op Home zoeken op `jazz` → menu → Gemeente → Uitgaan. De lijst
|
|
|
|
|
+toont dan exact de 3 jazz-treffers van Amsterdam (nagemeten tegen
|
|
|
|
|
+`flutterflowmobiel1?zoek=jazz`), terwijl het zoekveld *Zoek op titel* als
|
|
|
|
|
+placeholder toont. De gebruiker ziet een vrijwel lege pagina zonder oorzaak.
|
|
|
|
|
+
|
|
|
|
|
+Fix: *Initial Value* van het TextField binden aan App State `zoekterm` (het veld
|
|
|
|
|
+zit achter `if (FFAppState().zoekOpen)` en wordt dus pas gebouwd nadat de state
|
|
|
|
|
+gevuld is — de bekende "te laat"-valkuil speelt hier niet). Alternatief: de
|
|
|
|
|
+zoekterm wissen bij het verlaten van de pagina.
|
|
|
|
|
+
|
|
|
|
|
+### 132-C · Introtekst `stadsactiviteitAanmaken` belooft iets dat niet gebeurt
|
|
|
|
|
+
|
|
|
|
|
+Sleutel **`rupw26n4`** (NL én EN) zegt *"Heb je stadsredacteur-rechten voor deze
|
|
|
|
|
+plaats, dan staat je activiteit direct online; anders kijken we hem eerst na."*
|
|
|
|
|
+`_custom_stadsactiviteit_create()` zet echter **onvoorwaardelijk `status = 0`**,
|
|
|
|
|
+óók voor een account met stadsrechten (zie het domeinblok in `CLAUDE.md`). De
|
|
|
|
|
+tekst van `uitgaansevenementAanmaken` (`vkjvzuqz`) klopt wél.
|
|
|
|
|
+
|
|
|
|
|
+Fix: tekst aanpassen naar "we kijken hem eerst na", in beide talen.
|
|
|
|
|
+
|
|
|
|
|
+### 132-D · Vier Engelse labels staan op de verkeerde tekst (`Duplicate`-erfenis)
|
|
|
|
|
+
|
|
|
|
|
+| bestand | sleutel | nl | en (fout) |
|
|
|
|
|
+|---|---|---|---|
|
|
|
|
|
+| `evenement_horecagelegenheid_widget.dart:1253` | `jxlwje5u` | Bezorgen | Opening hours |
|
|
|
|
|
+| idem `:1465` | `usg8k534` | Bezorgt in | Opening hours |
|
|
|
|
|
+| idem `:1549` | `paqq93tp` | Betaalmogelijkheden | Opening hours |
|
|
|
|
|
+| `horecagelegenheid_current_widget.dart:529` | `jwojezxv` | Agenda | User |
|
|
|
|
|
+
|
|
|
|
|
+Verder zijn álle 219 gerenderde sleutels vertaald (0 lege `en`).
|
|
|
|
|
+
|
|
|
|
|
+### 132-E · Rechts uitgelijnde elementen missen hun rechterpadding
|
|
|
|
|
+
|
|
|
|
|
+Op `EventCurrent` raakt de **agenda-knop** exact de schermrand (de deelknop
|
|
|
|
|
+ernaast heeft wél ruimte), net als het categorielabel eronder. Op tablet valt
|
|
|
|
|
+het **favorietenhartje** op `HorecagelegenheidCurrent` zelfs half buiten beeld.
|
|
|
|
|
+
|
|
|
|
|
+### 132-F · Omschrijving wordt middendoor gesneden bij meerdere categorielabels
|
|
|
|
|
+
|
|
|
|
|
+Op een Home-kaart met 4 labels (die op 2 regels vallen) wordt de omschrijving
|
|
|
|
|
+zonder "…" afgekapt — zie *Ondernemend Dijk en Waard* op de tab Cultuur & Info.
|
|
|
|
|
+De labels eten de ruimte op die de responsive `Max Lines` veronderstelt. Bij één
|
|
|
|
|
+label klopt het wel. Overweeg de labels op één regel te begrenzen, of de
|
|
|
|
|
+omschrijving één regel korter.
|
|
|
|
|
+
|
|
|
|
|
+### 132-G · Lege lijst op het horeca-overzicht toont alleen een groot logo
|
|
|
|
|
+
|
|
|
|
|
+Kies je een categorie zonder treffers (in Amsterdam geldt dat voor 9 van de 13
|
|
|
|
|
+opties op de tab Activiteiten, want de dropdown toont de **hele taxonomie**, niet
|
|
|
|
|
+wat er in die plaats staat), dan verschijnt een kaal `logo800px.png`. De horeca-
|
|
|
|
|
+detailpagina doet dit al goed met `LegeLijstComponent` ("Geen evenementen
|
|
|
|
|
+gevonden…"). Hergebruik die hier — dat is de goedkoopste fix; het filteren van de
|
|
|
|
|
+dropdown op aanwezige categorieën kan niet betrouwbaar (de lijst is gepagineerd).
|
|
|
|
|
+Zelfde punt voor de **Bezorgen**-tab van een zaak zonder bezorginfo: die is nu
|
|
|
|
|
+volledig leeg.
|
|
|
|
|
+
|
|
|
|
|
+### 132-H · Favorieten is uitgelogd een leeg scherm
|
|
|
|
|
+
|
|
|
|
|
+Tab 1-3 tonen niets en geen uitleg; de uitnodiging *"Met een account bewaar je
|
|
|
|
|
+favoriete gemeenten…"* staat op tab 4, twee tabs naar rechts. Verwijs vanaf de
|
|
|
|
|
+eerste tab naar die knop (of toon `LegeLijstComponent` met die tekst).
|
|
|
|
|
+
|
|
|
|
|
+### 132-I · Kleine punten
|
|
|
|
|
+
|
|
|
|
|
+- **Build-stempel zichtbaar voor eindgebruikers.** `functions.buildStempel()`
|
|
|
|
|
+ staat onderaan de **drawer** én op **Favorieten** en toont `onbekend` zolang er
|
|
|
|
|
+ geen `--dart-define=BUILD_TS=…` meegaat. Weghalen vóór livegang, of vullen.
|
|
|
|
|
+- **Datums in `MijnProfiel`** staan ruw (`2026-09-22 06:06:00`) terwijl de rest
|
|
|
|
|
+ van de app *dinsdag 22 sep, 14:00* gebruikt. Geldt voor *Mijn evenementen* en
|
|
|
|
|
+ *Eigen activiteiten*.
|
|
|
|
|
+- **Kopie-knop is nog `primary`-rood** (restpunt van 127-C) en staat los
|
|
|
|
|
+ gecentreerd tússen twee kaarten, waardoor hij bij de verkeerde lijkt te horen.
|
|
|
|
|
+- **Persoonlijke agenda toont overal "Binnenkort meer…"**:
|
|
|
|
|
+ `favorieten_widget.dart:435` geeft hardcoded `inhoud: null` mee, terwijl alle
|
|
|
|
|
+ andere velden netjes uit `$.veld` komen. Vraag: levert
|
|
|
|
|
+ `favorieten_agenda.json` een omschrijvingsveld? Zo ja, binden.
|
|
|
|
|
+- **Zoekveld krijgt geen focus** als je het opent met het vergrootglas — je moet
|
|
|
|
|
+ er zelf nog in tikken.
|
|
|
|
|
+- **Login-melding** zegt *"Controleer je gebruikersnaam en wachtwoord"* terwijl
|
|
|
|
|
+ het veld *E-mailadres* heet.
|
|
|
|
|
+- **Tabnamen inconsistent**: *Favoriete gemeenten* (kleine g) naast *Favoriete
|
|
|
|
|
+ Gelegenheden* (hoofdletter G).
|
|
|
|
|
+- **Testadvertenties staan nog aan** (zichtbaar op `PUitgaanPage` en het
|
|
|
|
|
+ horeca-overzicht); op het horeca-overzicht legt de 468×60-banner zich over de
|
|
|
|
|
+ onderste kaart heen. Zie ook G0.6.
|
|
|
|
|
+
|
|
|
|
|
+### Wat expliciet GOED was
|
|
|
|
|
+
|
|
|
|
|
+Offline starten (rode banner *Geen verbinding met uitgaanskrant.com* + werkende
|
|
|
|
|
+knop **Opnieuw**, geen crash, geen grijs blok) · netwerkherstel · de vier
|
|
|
|
|
+datumfilters (nagemeten tegen de API) · zoeken op titel · de tab-bewuste
|
|
|
|
|
+categoriedropdown · login-foutafhandeling · de nieuwsbrief-toggles, die per rij
|
|
|
|
|
+onafhankelijk schakelen en netjes `subscribe`/`unsubscribe` met CSRF-token
|
|
|
|
|
+sturen (status 200) · `EventCurrent` inclusief het horeca-blok, ook als je er via
|
|
|
|
|
+de persoonlijke agenda komt · de responsive 1/2/3-kolommen op tablet.
|
|
|
|
|
+
|
|
|
## 🔔 129 · Sessie-verlopen-melding — verifiëren · Eigenaar: Bob (andere chat)
|
|
## 🔔 129 · Sessie-verlopen-melding — verifiëren · Eigenaar: Bob (andere chat)
|
|
|
|
|
|
|
|
**Bob 2026-09-21: niet in deze chat oppakken, alleen noteren.**
|
|
**Bob 2026-09-21: niet in deze chat oppakken, alleen noteren.**
|
|
@@ -1080,7 +1203,7 @@ selecteert de dropdown wél de juiste waarde maar verstuurt de create-actie leeg
|
|
|
De page states worden pas bij het indienen gelezen, dus die mogen gewoon in
|
|
De page states worden pas bij het indienen gelezen, dus die mogen gewoon in
|
|
|
On Page Load — daar speelt het timingprobleem niet.
|
|
On Page Load — daar speelt het timingprobleem niet.
|
|
|
|
|
|
|
|
-#### 127-E · Activiteitenformulier voorvullen · ⚠️ na 124 · Eigenaar: n.t.b.
|
|
|
|
|
|
|
+#### 127-E · Activiteitenformulier voorvullen · Eigenaar: Claude — bezig (2026-09-22)
|
|
|
|
|
|
|
|
24 bindingen. Tien TextFields (`titel`, `omschrijving`, `organisator`, `contact`,
|
|
24 bindingen. Tien TextFields (`titel`, `omschrijving`, `organisator`, `contact`,
|
|
|
`adres_straat` → *Adres*, `adres_plaats` → *Plaats*, `adres_postcode`,
|
|
`adres_straat` → *Adres*, `adres_plaats` → *Plaats*, `adres_postcode`,
|