Ruim anderhalf jaar ervaring met Flutter Web

Ik ben inmiddels ruim anderhalf jaar met Flutter een complexe web applicatie aan het bouwen. Toen we begonnen waren er twijfels of dat wel een verstandige keuze was, dus het is tijd om de balans op te maken.

De algehele ervaring valt me ondanks enkele ongemakken heel erg mee. Dit komt niet in de laatste plaats doordat ik eigenlijk native voor MacOS ben blijven ontwikkelen, en alleen als het nodig is de web versie lokaal draai. Dat is vooral ingegeven doordat de “hot reload” in de Web omgeving nog in werkelijkheid steeds een hot restart uitvoert, en stack traces in de native omgeving veel beter met de IDE en de source code integreren.

Daarnaast zijn we in de loop van de tijd verschillende kleine dingen tegen gekomen die de ene keer wat meer creativiteit vereisten dan de andere keer:

Zo heeft de muis en trackpad afhandeling het afgelopen jaar een evolutie doorgemaakt, waardoor deze nu verschilt tussen MacOS en Web. Dat is voor ons geen onoverkomelijk probleem omdat onze productie target alleen Web is, maar ik kan me voorstellen dat dit voor echte multi-platform applicaties kan leiden tot rommelige oplossingen.

Het enige code generatie probleem dat we voor JavaScript hebben ontdekt, was een verschil in de afhandeling van default parameter waarden in een tearoff binnen een enum constructor parameter. In JavaScript worden de null-safe parameters gevuld met null, terwijl de native wel de defaults respecteert. Dit was een verrassende bug, die tot iets meer verbose code leidde.

Verder blijft ook onder Flutter de browser een boeiende omgeving. Zo is het detecteren van de status van shift toetsen door de beperkingen van de browser sandbox niet betrouwbaar als de focus naar een andere applicatie wordt verplaatst. Ook hebben we op sommige browsers een pixel afwijking gezien in de cursor positie van de muis. En het blijft inherent onhandig dat sommige abstracties zoals een file picker in een browser omgeving een minder stabiele oplossing bieden.

Als laatste hebben we wat bijzondere oplossingen moeten maken door de platform verschillen voor sommige packages, wat vervelende gevolgen heeft voor widget testen die standaard op het native platform worden uitgevoerd.

Maar na anderhalf jaar durf ik best te zeggen dat Flutter Web echt zeer geschikt is voor het ontwikkelen van een geavanceerde web applicatie.