fix(preview): een dia-preview op een ontaarde breedte viel om (#714, foutklasse) #784
No reviewers
Labels
No labels
accepted
bug
declined
docs
duplicate
enhancement
good first issue
in-progress
needs-info
privacy
security
triage
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
LibreKAT/Ocideck!784
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/preview-nulbreedte-clamp"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Nasleep van #714: bij het aflopen van dezelfde foutklasse bleek die ook in de
previews te zitten — daar mét een reproductie. Dit repareert de twee oorzaken
die ik kon aantonen; de rest staat als #782.
Twee oorzaken, allebei ontaarde invoer
1.
clampmet een layout-constraint als bovengrens.In een
LayoutBuilderís de bovengrens de constraint. Zakt die onder 1,0, danstaat de bovengrens onder de ondergrens en gooit
clampInvalid argument(s): 1.0— letterlijk de melding uit #714, andere plek. Tweezusterregels in hetzelfde bestand droegen hetzelfde patroon.
2. Een deling die NaN oplevert.
bulletScaleCapdeeltwdoorbulletSize, en die is nul zodra de breedte nul is (alle corpsgroottes zijn eenfractie van
w).0 / 0is NaN, die NaN reist door de fit-bisectie tot in eenTextStyle, en gaat daar af alsfontSize >= 0 is not true— een melding dienergens naar de deling wijst.
De tweede kwam pas boven toen de eerste weg was; zo werken deze lagen.
Waarom dit ertoe doet
Flutter meet een widget vaker dan hij hem tekent. Een inklappend paneel, een
rij zonder resterende ruimte, een animatie die bij nul begint — geen van die
drie is bijzonder, en alle drie leveren ze precies deze constraint.
Wat dit níét is
Een gebruikerspad hiernaartoe is niet aangetoond. Het venster heeft op
desktop een ondergrens van 1000×650 (
minimumWindowSize) en de panelen hebbenhun eigen vloer (
_minSlideRailWidth = 210). Dit is dus hardening met eenreproductie, geen gerapporteerde storing. De reden om het tóch te doen: de
volgende animatie of nieuwe layout breekt die aanname stilzwijgend, en de
melding wijst dan nergens naar de oorzaak — precies wat #714 was.
De toets
preview_degenerate_width_testscheidt "past niet" van "valt om". Eenoverloop van een paar pixels is bij deze breedtes de juiste uitkomst — twee
kolommen passen niet in één pixel — en blijft toegestaan; een
ArgumentErrorofeen gefaalde assertie niet. Zonder dat onderscheid zou de toets iets eisen wat de
layout niet kan leveren.
Rood gezien, per reparatie apart: de clamp terugzetten maakt 5 toetsen rood,
de NaN-guard weghalen 3.
Wat er níét in zit
Drie van de zes omvallende slidetypes hebben een ándere oorzaak —
checklistenscopeMatrix(eenLinearProgressIndicator-assertie),timeline(
Infinity or NaN toInt) encockpit(meerdere uitzonderingen). Die meenemenzou van deze bugfix drie ongerelateerde wijzigingen maken; ze staan met
reproductiemethode in #782.
Ratchet
De methodelengte viel (153 van 150):
_bulletsContentstond op main al op 148,dus twee regels speling. Niet de uitleg ingekort en niet de basislijn opgehoogd —
de berekening staat nu als eigen functie naast
_bulletsSlideShell, waar zeinhoudelijk ook thuishoort.
Poort
make checkgroen (exit 0, 86,2% dekking),check-secretsensastschoon.Geen nieuwe
l10n.d('…')-string, geen afhankelijkheidswijziging, geen zichtbaretekst geraakt.
Refs #714. Zie #782 voor de rest.