Od augustového Flutteru 3.47 pribudli opravy pre produkčné aplikácie, nové možnosti pre desktop aj nástroje, ktoré približujú Dart k vývoju celého systému. Pozreli sme sa na najzaujímavejšie novinky od polovice augusta do 22. októbra: od WebAssembly a samostatných UI balíčkov po Skills CLI a stabilný Genkit Dart.
V auguste sme na flutter.sk predstavili Flutter 3.47, jeho modulárnejší dizajn a Impeller na desktope. Odvtedy sa toho nazbieralo dosť aj bez ďalšieho veľkého vydania frameworku. Časť zmien oceníte pri najbližšom upgrade, ďalšie pri webovom alebo desktopovom projekte. A niekoľko z nich stojí za pozornosť, ak si pri programovaní pomáhate AI alebo ju pridávate do vlastnej aplikácie.
Flutter 3.47 dostal dôležité opravy
Najnovším opravným vydaním stabilnej vetvy je k 22. októbru Flutter 3.47.7. Na úrovni jazyka zostáva aktuálnou hlavnou verziou augustový Dart 3.13. Jesenné aktualizácie Flutteru sa preto oplatí čítať najmä ako odstraňovanie konkrétnych problémov, ktoré sa prejavili pri používaní.
V changelogu branche 3.47 nájdeme:
- opravy zostavovania aplikácií cez Swift Package Manager na iOS a macOS;
- riešenie problémov pri ladení s Xcode 27 a pádov na fyzických zariadeniach s iOS 27;
- opravu zamŕzania produkčných aplikácií na Windows;
- odstránenie úniku pamäte pri spracovaní dotykov na Linuxe;
- opravy hot restartu pri WASM buildoch a hot reloadu vo vnorených Pub workspaces.
Samotná verzia 3.47.7 sa sústreďuje na prístupnosť v iOS. Opravuje nesprávnu geometriu prvkov pri OverlayPortal, ktorá ovplyvňovala VoiceOver aj zásahy automatizovaných XCUITest testov, a preskakovanie fokusu pri ReorderableListView.
Ak ste projekt nechali na pôvodnej 3.47.0, tieto opravy sú dobrý dôvod naplánovať aktualizáciu a prejsť svoje obvyklé regresné testy. Aj nenápadný patch vie vyriešiť problém, ktorý by sa inak hľadal celé popoludnie (been ther, done that).
Material a Cupertino pokračujú ako samostatné balíčky
Na augustové vydanie nadviazal tím 9. septembra podrobnejším vysvetlením oddelenia Material a Cupertino. Samostatné balíčky material_ui a cupertino_ui odštartovali vo verzii 1.0.0 s obsahom zodpovedajúcim pôvodným knižniciam vo frameworku.
Praktický prínos je oddelenie aktualizácie Flutteru od aktualizácie dizajnového systému. Tím môže posunúť SDK kvôli oprave enginu alebo podpore platformy a zmeny vzhľadu komponentov riešiť samostatne. UI balíčky zároveň získavajú vlastný cyklus vydávania, takže ich opravy nemusia čakať na ďalší štvrťročný Flutter release.
Pre existujúce projekty je prechod zatiaľ dobrovoľný. Oficiálny migračný postup využíva dart fix na pridanie balíčkov a úpravu importov. Pôvodné knižnice má neskôr čakať deprecácia a odstránenie; septembrové oznámenie im neurčuje konkrétny termín.
Google sa na údržbe oboch balíčkov naďalej podieľa. Tím zároveň uvádza rozpracované implementácie Liquid Glass a Material 3 Expressive. Pri plánovaní aplikácie ich treba brať ako prebiehajúci vývoj.
Za pozornosť stojí aj posilňovanie základnej knižnice widgets. Lepší spoločný základ môže uľahčiť život autorom vlastných dizajnových systémov.
Desktopové okná majú vlastné API
Pre vývojárov desktopových aplikácií patrí medzi najzaujímavejšie čítanie predstavenie Desktop Windowing API z 24. augusta. Na jeho návrhu a implementácii vedie prácu Canonical v spolupráci s Googlom.
API počíta s piatimi druhmi okien: bežným oknom, dialógom, popupom, tooltipom a pomocným "satellite" oknom. To posledné si môžete predstaviť ako plávajúci panel nástrojov v grafickom editore. Popup alebo tooltip môže zasa využiť skutočné systémové okno a zobraziť sa aj mimo hraníc hlavného okna aplikácie.
Z pohľadu Flutter vývojára je príjemné, že okná patria do spoločného widgetového stromu. Zdieľanie stavu preto nemusí znamenať budovanie samostatnej komunikačnej vrstvy medzi viacerými aplikáciami. Autori uvádzajú kompatibilitu s bežnými riešeniami ako Riverpod a Bloc.
Dostupnosť však má dôležitú podmienku: predstavené API je experimentálne, na kanáli main a za prepínačom --enable-windowing. Jeho rozhranie sa ešte môže meniť.
Do budúcna sa plánuje aj integrácia do známych prvkov, napríklad showDialog, showMenu a Tooltip. Už dnes je to zaujímavý priestor na prototypovanie editorov, pracovných nástrojov či aplikácií s viacerými dokumentmi (ja momentálne makám na MySQL IDE pre mobily a desktopy a toto je absolútny game changer).
WebAssembly sa oplatí vyskúšať na vlastnej aplikácii
Flutter zorganizoval od 17. do 21. augusta WebAssembly Week, počas ktorého pomáhal riešiť prekážky pri migrácii webových aplikácií. Podpora WASM je stabilná už od Flutteru 3.22; aktuálna iniciatíva sa sústreďovala na jej širšie používanie a kompatibilitu balíčkov.
V zverejnenom záťažovom deme dosiahla WASM verzia čas snímky približne 17,4 ms oproti 34,5 ms pri JavaScripte. Meranie prebehlo v Chrome 151 na MacBooku Pro s M4 Pro pri konkrétnej záťaži widget stromu. Je to však skôr dôvod na vlastné meranie, ako sľub dvojnásobného zrýchlenia úplne každej aplikácie.
Prvý pokus je jednoduchý:
flutter build web --wasm JavaScript zostáva predvoleným cieľom bežného webového buildu. Pri migrácii bývajú prekážkou závislosti používajúce staré webové API. Dokumentácia odporúča package:web a dart:js_interop; pre multithreaded vykresľovanie treba správne nastaviť aj HTTP hlavičky COOP a COEP.
Wasm build obsahuje aj JavaScriptový fallback. Kompilácia preto ešte nepotvrdzuje, že aplikácia v každom prehliadači skutočne beží cez Wasm. Pri porovnaní výkonu sa oplatí overiť použitý režim a otestovať prehliadače vašich používateľov.
Ďalším pripravovaným krokom je odložené načítavanie častí Wasm aplikácie (deferred loading). Zatiaľ je však označované len ako experiment na main s plánovaným sprístupnením vo Flutteri 3.50.
Skills CLI 1.0 prináša návody pre AI priamo z balíčkov
Ak používate programovacieho agenta, pravdepodobne poznáte situáciu, keď navrhne volanie API, ktoré v nainštalovanej verzii knižnice vôbec neexistuje. Práve aktuálny kontext knižníc rieši Skills CLI 1.0, oznámené 8. septembra.
Nástroj pôvodne vytvoril Serverpod a teraz ho spravuje a publikuje tím Dartu. Autor balíčka môže pribaliť adresár skills/ s inštrukciami a príkladmi pre AI agenta. Takto sa návod distribuuje spolu s konkrétnou verziou kódu.
V projekte sa dostupné návody vyhľadajú príkazom:
dart run skills@ get CLI prejde priame závislosti, ponúkne nájdené skills a umožní vybrať tie, ktoré chcete nainštalovať. Ďalšie spustenie zohľadní zmeny.
Zaujímavý je najmä prínos pre menšie či interné knižnice. Ich autor vie agentovi vysvetliť spôsob spracovania chýb alebo odporúčaný postup, aj keď model daný balíček z tréningu nepozná.
Na túto tému nadväzuje aj októbrový článok tímu Flutteru o AI vývoji. Zdôrazňuje rýchle overovanie výsledkov cez analyzátor, testy a inšpekciu bežiacej aplikácie. Pre prax je to užitočné pripomenutie: kvalitnejší kontext pomáha, spätnú väzbu z reálneho projektu však stále potrebujete.
Genkit Dart 1.0 je pripravený na produkčné AI funkcie
Dňa 8. októbra vyšiel Genkit Dart 1.0, prvá stabilná verzia open source frameworku Googlu na tvorbu AI funkcií a agentných postupov v Darte.
Genkit zjednocuje prístup k viacerým poskytovateľom modelov vrátane Gemini, Anthropic a OpenAI. AI logiku skladá do typovaných „flows“, testovateľných a dostupných aj cez HTTP. Flutter klient a Dart server pritom môžu zdieľať dátové schémy.
Lokálne Developer UI slúži na skúšanie promptov a kontrolu jednotlivých krokov. Pribudnúť môže správa promptov cez Dotprompt, middleware na opakovanie požiadaviek či telemetria cez OpenTelemetry.
Dôležitá je podpora prerušenia postupu kvôli potvrdeniu používateľa. Ak má agent napríklad vytvoriť rezerváciu, aplikácia vie vykonávanie pozastaviť, zobraziť podmienky a pokračovať až po potvrdení.
Stabilita jadra 1.0 sa automaticky nevzťahuje na všetky vyššie API. Rozhrania pre stavových agentov zostávajú pod experimentálnym importom. Pri návrhu produkčnej aplikácie sa preto oplatí vybrať konkrétne funkcie podľa ich stavu.
Genkit tak umožňuje rozšíriť Flutter aplikáciu o AI logiku v rovnakom jazyku. Privátne API kľúče pritom patria na chránený backend.
Generatívne UI vie nechať výpočty na Darte
Na Genkit tematicky nadväzuje augustové predstavenie klientskych funkcií v A2UI. A2UI prenáša popis používateľského rozhrania, ktorý Flutter pomocou GenUI vykreslí z dostupných komponentov. Klientske funkcie umožňujú v tomto popise odkázať aj na operáciu vykonanú lokálne.
Predstavte si asistenta pri plánovaní cateringu. Model vyberie vhodnú kartu a určí ingrediencie, no cenu za zadané množstvo vypočíta obyčajná Dart funkcia. Aplikácia ju zaregistruje do katalógu s názvom, parametrami a návratovým typom; prijatý A2UI výraz potom vyhodnotí priamo na zariadení.
Takéto rozdelenie znižuje počet sieťových požiadaviek a dáva výpočtom predvídateľné správanie. Rovnaký princíp sa hodí na prevody jednotiek, formátovanie alebo jednoduché prepočty z lokálnych dát.
Pre vývojára zostáva táto časť bežným kódom, ktorý môže testovať a upravovať pomocou hot reloadu. Práve takéto detaily rozhodujú o tom, či je generatívne rozhranie pri používaní svižné a zrozumiteľné.
Dart na backende ukazuje konkrétne využitie
Dňa 22. septembra zverejnil Craig Labenz skúsenosti s prepisom backendu GenLatte do Dartu. Ide o aplikáciu, ktorú tím Flutteru používa pri svojich pop-up kaviarňach. Pôvodný Flutter frontend komunikoval s funkciami napísanými v Node.js.
Pri migrácii vznikli zdieľané dátové modely pre klienta a server. Zápisy sa presunuli do serverových operácií, zostali zachované kontroly oprávnení a pribudli end-to-end testy. Spoločný dátový balíček pritom musel fungovať bez závislosti od Flutter SDK.
Autor tiež zlúčil viac než pätnásť backendových služieb do jednej nasadzovanej funkcie. Úspora v tomto projekte súvisela aj s touto zmenou architektúry a počtom udržiavaných bežiacich inštancií. Samotný prechod z JavaScriptu na Dart preto nemožno zamieňať za automaticky lacnejšiu prevádzku.
Pre Flutter vývojárov je prípad zaujímavý najmä spoločnými typmi a jednoduchším sledovaním celého toku požiadavky. Pri novom projekte môže byť Dart backend prirodzenou voľbou; pri existujúcom systéme dáva zmysel porovnať tento prínos s cenou migrácie.
Z komunitných projektov zaujalo ladenie WebSocketov a C++
V septembrových výsledkoch Google Summer of Code sa objavilo niekoľko technických projektov, ktoré sa oplatí sledovať.
Jeden sa venuje viditeľnosti WebSocket komunikácie v DevTools. Rozširuje zber údajov o spojeniach a rámcoch a zobrazuje ich v sieťovom paneli vrátane časov, veľkostí a udalostí životného cyklu. Pri aplikáciách s komunikáciou v reálnom čase by takýto pohľad výrazne uľahčil zisťovanie, čo sa medzi klientom a serverom deje.
Ďalší projekt rozvíja experimentálnu podporu C++ v ffigen. Okrem Dart bindingov generuje aj potrebnú C++ prepojovaciu vrstvu a rieši prácu s triedami či životným cyklom natívnych objektov.
Ide o výsledky konkrétnych vývojových projektov. Ich predstavenie samo osebe neznamená, že sú všetky funkcie súčasťou aktuálneho stabilného SDK. Pre autorov pluginov a tímy s natívnymi knižnicami však ukazujú zaujímavý smer ďalšieho vývoja.
Čo si vyskúšať pred ďalším vydaním
Z tohto jesenného výberu by sme do najbližšieho technického plánovania zaradili tri malé úlohy:
- Prejsť opravné vydania 3.47.x a aktualizovať SDK spolu s regresnými testami vlastnej aplikácie.
- Pri webovom projekte zmerať Wasm build na reprezentatívnej obrazovke aj v používaných prehliadačoch.
- Pri práci s AI skontrolovať skills vlastných závislostí a spojiť ich s analyzátorom a testami.
Experimentálne desktopové okná si zatiaľ zaslúžia samostatný prototyp. Genkit 1.0 zasa dáva zmysel preskúmať tam, kde už máte konkrétnu AI funkciu, ktorú chcete používateľom ponúknuť.
Podľa oficiálneho harmonogramu je ďalšie veľké vydanie, Flutter 3.50, plánované na november 2026. Dovtedy je čo skúšať aj na súčasnej verzii.
Komentáre (0)
Prihláste sa a pridajte komentár.
Zatiaľ žiadne komentáre. Buďte prvý!