De tekeningen in een document-PDF houden zich aan de grenzen van het platform #1615
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!1615
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/pdf-tekeningen-platformgrenzen"
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?
Op de vraag of de tekeningen uit #1612 ook op web en Windows werken was het antwoord twee keer nee — en één daarvan is een regressie die ik daar zelf in heb gezet.
Windows en Linux: een regressie
Er zit geen WebView-implementatie voor die platformen in dit project.
pubspec.lockkentwebview_flutter_android,webview_flutter_wkwebviewenwebview_flutter_web; voor Windows en Linux is er niets.Het exportpad van #1612 vroeg daar tóch om een diagramrender. Dat zet
hostNeededaan, de host bouwt eenWebViewControllerop een platform zonder implementatie, en dat gooit. Een document met één mermaid-diagram exporteerde daar eerst gewoon.De dienst vraagt nu eerst
isAvailableen geeft anders meteen niets terug. Het diagram valt dan terug op zijn bron — zoals bedoeld — en zonder de twintig seconden wachten per diagram die het plafond anders had gekost. Grafieken worden in Dart getekend en reizen wél op elk platform mee.Web: al langer stuk, en stil
Daar werkt de documentexport helemaal niet, en niet alleen de PDF.
pickDocumentExportDestinationroeptFilePicker.saveFileaan zonder bytes, en de webimplementatie gooit dan eenArgumentError("The bytes are required when saving a file on the web"). Er zat nergens eentryomheen, dus kwamsetStatenooit en bleef de knop eeuwig op zijn tolletje staan — zonder één woord uitleg, in alle vier de formaten, al sinds de documentexport bestaat.De dialoog zegt nu dat het niet gelukt is, met de reden erbij, en laat het document ongemoeid. Het wél laten wérken op web betekent de klaargemaakte bytes als download aan de browser geven; dat is een eigen wijziging en staat als zodanig in KNOWN_LIMITATIONS.
Een vangst die te smal was
Allebei de vangsten zijn verbreed van
on Exceptionnaar een benoemdecatch.ArgumentErrorís eenError, geenException— een vangst opExceptionhad hem laten lopen en de knop alsnog laten draaien. Om precies dezelfde reden is de vangst rond het plaatsen van een SVG verbreed: een ontleder die op iets onverwachts stuit werpt net zo goed eenError, en voor de uitkomst maakt dat niets uit — het diagram is er niet, dus valt het terug op zijn bron. Kaal is geen van beide; ze loggen wat ze vangen.Wat de documentatie beweerde
Dat de webversie "de bron zou tonen". Dat was nooit waar — daar komt geen PDF. Rechtgezet in USER_GUIDE (nl + en) en KNOWN_LIMITATIONS (nl + en), mét de datum en de reden van de correctie, zodat te zien is dat de eerdere zin ongemeten was.
Toetsen
make checkgroen (dekking 87,2%, per-bestand-vloer 0).make check-secrets: geen bevindingen.make sast: 0 findings. DAST niet gedraaid — deze wijziging raakt het geserveerde weboppervlak niet.WebViewPlatform.instancenull, precies zoals daar. De test bewijst eerst dát hij null is (anders meet hij niets), en dan dat een render meteen niets oplevert in plaats van eeuwig te wachten — mét eentimeoutdie "BLEEF HANGEN" zou teruggeven, zodat een terugval naar het oude gedrag rood wordt in plaats van traag.ArgumentErroruitonExport, en dan de melding in beeld, de reden erbij, en geen tolletje meer.Eén ding meet ik níet: dat het op een échte Windows-machine goed gaat. Er staat hier geen Windows, en de CI draait de statische poort. Wat ik wel weet is dat de code daar nu niet meer om een renderer vraagt die er niet is; wat de gebruiker dan ziet is de bron van zijn diagram, en dat is precies het pad dat de unit-tests wél afdekken.