[...]
Je post klinkt als een sales pitch voor managers.
Leuk in theorie en zeker niets nieuws onder de zon. Qt doet dit bijvoorbeeld al jaren in C++: single source, multiple targets (ook mobile). KDE breit daar dan een hele hoop extra's aan moest je ze nodig hebben.
Je loopt hoe dan ook altijd tegen de grenzen aan van het framework; ofwel is de UI toch niet "native", wat sommigen voor de borst stoot, ofwel ontbreekt net de integratie met een of andere OS feature/service, waardoor je app niet werkt zoals je zou willen, of is er ergens iets dat "lost in translation" geraakt, waardoor er vreemde quirks ontstaan die toch anders werken op verschillende OSen. Afhankelijk van de flexibiliteit kan je dan voor enkel dat stukje iets native schrijven, maar vaak komt dat toch niet helemaal goed omdat de customization points ontbreken, en dan begin je een lange strijd tegen het framework om toch te kunnen doen wat je wil.
Kosten besparen? Sure, zoals je zegt, single source multiple platforms.
Enorme kostenbesparingen? Doubtful. Want het bestaat al. Het wordt al toegepast. Het kost nog steeds veel geld om op meerdere platforms te ontwikkelen, testen, etc.
Revolutionair? Zeker niet.
Ga ik het in 't oog houden? Zeker wel. Zoals ook .Net Maui, Qt, en anderen die in mijn ogen toch al wel een strak track record hebben in de wereld van cross-platform applicaties.
Wil toch graag even reageren. Ten eerste ben ik geen manager, maar een ontwikkelaar met 10 jaar mobile development ervaring, waarvan 2,5 jaar full time met Flutter en ik praat vanuit mijn eigen ervaring, niet vanuit de theorie. In je post stel je dat het allemaal al lang bestaat. Het komt echter over als dat je het framework niet echt kent.
Volgens mij ondersteunt QT/C++ geen hot reload en zul je dus bij iedere wijziging van je code je app opnieuw moeten compileren en deployen in plaats van binnen 1 seconde je nieuwe code te zien runnen. Dat levert een enorme tijdsbesparing op, als je met je klant even de UI kunt aftikken: dit moet iets breder, dit naar links, etc. en deze live de UI naar zijn wens aangepast ziet worden. Flutter is bij default smooth doordat Material Design gebruikt wordt en ook op een Android 5 device ziet het er even smooth uit als op Android 12 (wat een probleem was bij native ontwikkeling, bv.).
Dan de opmerking... "Je loopt hoe dan ook altijd tegen de grenzen aan van het framework". Doordat je eenvoudig de mogelijkheid hebt om danwel packages te gebruiken, dan wel zelf een plugin in native code kunt schrijven (gewoon in Swift in XCode of Kotlin in Android Studio) heb je gewoon volledige beschikking/aansluiting met het platform. Hier is gewoon goed over nagedacht. Je kunt zelfs native views in je app tonen (voor de liefhebber). Het klinkt dat je je eigen frustratie over QT probeert te projecteren op Flutter als het om platform integratie gaat.
Wij hebben dus als bedrijf wel enorme kosten bespaard. In plaats van een native Android en een native iOS app te moeten bouwen, hoefden we maar 1 app te bouwen. Bij een andere cross platform oplossing (Xamarin, de voorloper van MAUI) liepen we wel tegen allerlei platform-integratie zaken aan en moest de UI juist dubbel (native) uitgevoerd worden, waardoor de kostenbesparing uiteindelijk nihil was t.o.v. native ontwikkeling. Bij Flutter zijn we daar niet tegenaan gelopen. En met alle verbeteringen in Dart zijn die besparingen alleen maar toegenomen (null safety! statically strong typed! sterke analysis opties voor uniforme code en minder potentiële fouten). Maar goed, ik ben niet geen neutrale partij, maar baseer mijn verhaal op mijn ervaring en niet op een gevoel.
Het allergrootste probleem met Flutter is de nieuwe taal: een developer zal Dart moeten gaan leren. Developers die al C#, Javascript of C++ kennen zijn er plenty, maar de unieke combinatie van eigenschappen van Dart, maakt het wel een aantrekkelijke taal.