|
@@ -345,6 +345,26 @@ export PATH="/home/bob/fvm/bin:$HOME/.pub-cache/bin:$PATH" && /home/bob/Projects
|
|
|
`run_in_background: true`. Volg tot minimaal "All done!" én
|
|
`run_in_background: true`. Volg tot minimaal "All done!" én
|
|
|
idealiter een succesvolle app-launch (`Launching lib/main.dart...`,
|
|
idealiter een succesvolle app-launch (`Launching lib/main.dart...`,
|
|
|
geen nieuwe `EXCEPTION CAUGHT BY RENDERING LIBRARY`).
|
|
geen nieuwe `EXCEPTION CAUGHT BY RENDERING LIBRARY`).
|
|
|
|
|
+- **⚠️ `emulator-5554` is NIET vast de telefoon — de poort hangt af van
|
|
|
|
|
+ de opstartvolgorde, niet van het toestel.** Bevestigd 2026-09-01: na
|
|
|
|
|
+ een herstart van de tablet-service pakte de **tablet** poort 5554 en
|
|
|
|
|
+ de telefoon 5556, precies omgekeerd aan wat hieronder staat. De
|
|
|
|
|
+ AVD-namen kloppen ook niet meer met de oude notitie (de tablet heet
|
|
|
|
|
+ `Medium_Tablet_no-google`). **Controleer dus altijd eerst wélk toestel
|
|
|
|
|
+ je voor je hebt** met `adb -s <device> shell wm size` — tablet =
|
|
|
|
|
+ 2560x1600 @ 320dpi, telefoon = 1080x1920 @ 420dpi — vóór je een test
|
|
|
|
|
+ of screenshot aan een device-id koppelt.
|
|
|
|
|
+- **Emulator weg uit `adb devices` terwijl de systemd-service "active"
|
|
|
|
|
+ meldt: kijk naar de luisterpoorten, niet naar de service.** Een
|
|
|
|
|
+ `ss -lnt | grep 555` laat zien of er überhaupt een console-poort
|
|
|
|
|
+ geopend is. Twee bekende faalvormen, beide 2026-09-01 gezien: (1) de
|
|
|
|
|
+ emulator crasht met `code=dumped, status=11/SEGV` (zie ook hieronder),
|
|
|
|
|
+ (2) bij het herstarten terwijl de andere emulator nog draait komt
|
|
|
|
|
+ `kvm_user_backed_ram_map: error registering slot: File exists` — dan
|
|
|
|
|
+ boot hij nooit af. **Fix voor (2): beide services stoppen, wachten tot
|
|
|
|
|
+ `pgrep qemu-system-x86` niets meer geeft, en dan één voor één starten.**
|
|
|
|
|
+ Onder zware geheugendruk (dit gebeurde bij ~47 GB swap in gebruik) is
|
|
|
|
|
+ dit extra waarschijnlijk.
|
|
|
- **Testdevices (vanaf 2026-08-09): twee lokale AVD's, geen fysieke
|
|
- **Testdevices (vanaf 2026-08-09): twee lokale AVD's, geen fysieke
|
|
|
toestellen meer.** `emulator-5554` (`licht_avd`, telefoon-formaat,
|
|
toestellen meer.** `emulator-5554` (`licht_avd`, telefoon-formaat,
|
|
|
laag RAM-profiel) en `emulator-5556` (`tablet_avd`, tablet-
|
|
laag RAM-profiel) en `emulator-5556` (`tablet_avd`, tablet-
|
|
@@ -850,6 +870,62 @@ klikken.** Bevestigd 2026-08-31 (P1-33, 93 hardcoded hexen → 12, en die
|
|
|
verschillende velden zijn — een hartje-op-wit-vlak zit in *Icon
|
|
verschillende velden zijn — een hartje-op-wit-vlak zit in *Icon
|
|
|
Color*, een hamburger-op-gekleurd-vlak in *Fill Color*.
|
|
Color*, een hamburger-op-gekleurd-vlak in *Fill Color*.
|
|
|
|
|
|
|
|
|
|
+**Een lijstwidget met paginering omzetten naar een grid (Replace) —
|
|
|
|
|
+volledig recept, bevestigd 2026-09-01 op `HomeUitgaantabelKaartComponent`.**
|
|
|
|
|
+Rechtsklik → Replace weigert met "Can't replace a widget that has
|
|
|
|
|
+pagination enabled". De hele cyclus:
|
|
|
|
|
+1. Backend Query (3e icoontje) → **Edit** → **Enable Infinite Scroll uit**.
|
|
|
|
|
+2. De variabele die aan de paginering hing (hier `page`) wordt daardoor
|
|
|
|
|
+ **rood/ongeldig**, en Confirm wordt geweigerd met de toast
|
|
|
|
|
+ *"Current query is invalid. Please fix."* — je moet die binding dus
|
|
|
|
|
+ eerst weghalen: rij openklappen → potlood bij Value → in de
|
|
|
|
|
+ bronnenlijst het **prullenbak-icoon linksboven** ("Remove Variable")
|
|
|
|
|
+ → er verschijnt een vrij tekstveld → typ een tijdelijke `0` → Confirm.
|
|
|
|
|
+3. Rechtsklik de node in de **widget tree** → Replace Widget → kies.
|
|
|
|
|
+4. Daarna alles terugzetten: Infinite Scroll weer aan, en het
|
|
|
|
|
+ Value-icoontje naast de variabele → bron **"Next Page Index
|
|
|
|
|
+ (<WidgetNaam>)"** — dat is dezelfde bron die daarna weer als
|
|
|
|
|
+ *"Pagination - Next Page Number"* in beeld komt.
|
|
|
|
|
+**Let op wat een Replace stilletjes reset:** `Shrink Wrap` valt terug op
|
|
|
|
|
+uit (zet 'm handmatig terug als het origineel 'm aan had), en een
|
|
|
|
|
+GridView krijgt er een `Child Aspect Ratio` bij die een ListView niet
|
|
|
|
|
+had.
|
|
|
|
|
+
|
|
|
|
|
+**Een lijst met paginering binnen een `SingleChildScrollView` laat zich
|
|
|
|
|
+NIET omzetten naar een grid — live bewezen 2026-09-01, en weer
|
|
|
|
|
+teruggedraaid.** Home plaatst `HomeUitgaantabelKaartComponent` in een
|
|
|
|
|
+`SingleChildScrollView > Column` (`home_widget.dart`), dus in een
|
|
|
|
|
+context zonder begrensde hoogte. Daar werkt alleen `PagedListView`:
|
|
|
|
|
+- **`PagedMasonryGridView` (StaggeredView) rendert er niets** — geen
|
|
|
|
|
+ kaarten, geen laadspinner, geen foutmelding, geen overflow. Puur een
|
|
|
|
|
+ leeg vlak. Op telefoon- én tabletformaat getest, met een baseline-build
|
|
|
|
|
+ ernaast die wél gewoon kaarten toonde. De API leverde intussen keurig
|
|
|
|
|
+ 44 KB data, dus het is zuiver een renderprobleem.
|
|
|
|
|
+- **`PagedGridView` is óók geen oplossing**, om een andere reden: een
|
|
|
|
|
+ GridView bepaalt de celhoogte via `childAspectRatio` (breedte/hoogte),
|
|
|
|
|
+ en dat kan een **vaste** kindhoogte principieel niet volgen — binnen
|
|
|
|
|
+ één breekpuntband varieert de schermbreedte, dus elke waarde geeft óf
|
|
|
|
|
+ overflow óf grote witruimte. De kaart hier heeft een vaste responsieve
|
|
|
|
|
+ hoogte (160/200/240/280 + 12px padding), en met de standaard
|
|
|
|
|
+ `childAspectRatio: 1.0` werd een cel op 411dp ruim 400dp hoog tegen
|
|
|
|
|
+ 184dp benodigd.
|
|
|
|
|
+**Gevolg:** meerkoloms op tablet vraagt eerst een herstructurering van
|
|
|
|
|
+de ouder (de `SingleChildScrollView` eruit, de grid zelf laten scrollen)
|
|
|
|
|
+— niet alleen een Replace op het component. Begin daar niet aan zonder
|
|
|
|
|
+live test. StaggeredView ondersteunt overigens wél gewoon paginering
|
|
|
|
|
+(de "Enable Infinite Scroll"-toggle staat er en genereert
|
|
|
|
|
+`PagedMasonryGridView`); dat was niet de blokkade.
|
|
|
|
|
+
|
|
|
|
|
+**Twee dialogen zijn wél te vergroten/verplaatsen — dat lost een hoop
|
|
|
|
|
+clipping op.** Aanvulling op het doodlopende page-zoom-spoor hieronder:
|
|
|
|
|
+- De **Backend Query-dialoog** is **groter te slepen aan zijn onderrand**
|
|
|
|
|
+ (het "———"-greepje onderaan). Dat was nodig om het `Value`-veld van
|
|
|
|
|
+ een variabele te bereiken, dat er anders onder valt.
|
|
|
|
|
+- De **"Set from Variable"-dialoog** met een **Responsive Value**
|
|
|
|
|
+ (4-traps if/else) toont standaard maar 2 van de 4 takken; sleep 'm aan
|
|
|
|
|
+ zijn **bovenrand** omhoog, dan staan alle vier de waardevelden in beeld.
|
|
|
|
|
+Scrollen met het muiswiel werkt in beide gevallen niet — slepen wel.
|
|
|
|
|
+
|
|
|
**Rechterpaneel-clipping: klik op een sectiekop om die dicht te
|
|
**Rechterpaneel-clipping: klik op een sectiekop om die dicht te
|
|
|
klappen — dat is betrouwbaarder dan de "Search properties..."-zoekbalk.**
|
|
klappen — dat is betrouwbaarder dan de "Search properties..."-zoekbalk.**
|
|
|
Gevonden 2026-08-31: het paneel scrollt niet mee via muiswiel, en het
|
|
Gevonden 2026-08-31: het paneel scrollt niet mee via muiswiel, en het
|