Preskočiť na obsah
flutter.sk
Čo je nové vo Flutteri 3.47

Čo je nové vo Flutteri 3.47

Jakub Bateľ

Publikované 14. augusta 2026  · 10 min čítania

Flutter 3.47 je tu a prináša niekoľko zaujímavých noviniek.

Dnes vítame verziu 1.0 samostatných balíčkov material_ui a cupertino_ui. Ide o významný míľnik, ktorý oddeľuje dizajnové systémy od jadra SDK.

Zároveň zlepšujeme výkon a nástroje naprieč celou platformou. Toto vydanie prináša Impeller ako predvolený renderer na desktope, pripravuje naše pipeline na iOS, macOS a Xcode 27, a posúva Flutter Widget Previews do stabilnej verzie.

Spustite si teda flutter upgrade v termináli a poďme na to, alebo si prečítajte viac o hlavných zmenách v tomto vydaní.

Vyberte si vlastnú UI cestu

Prvý krok k odviazanému Flutteru je tu: Material a Cupertino sú teraz dostupné ako samostatné balíčky!

Jednou z najväčších predností Flutteru je jeho schopnosť vykresľovať pixel-perfect Material a Cupertino widgety. Keďže však tieto dizajnové knižnice boli historicky súčasťou jadra SDK, spomaľovalo to ich vývoj a sťažovalo prispievanie či ich aktualizáciu.

Jadro SDK v tomto vydaní stále obsahuje tieto knižnice, no môžete sa dobrovoľne prepnúť na samostatné balíčky material_ui a cupertino_ui, ktoré oficiálne dosiahli verziu 1.0 na pub.dev.

Oddelené roadmapy dizajnu (voliteľné)

Prechodom na oddelené dizajnové systémy získate kontrolu nad vlastnou dizajnovou roadmapou. Keďže material_ui a cupertino_ui teraz žijú na pub.dev, môžu vydávať opravy chýb a nové komponenty podľa vlastného, týždenného harmonogramu, nezávisle od štvrťročných vydaní Flutter SDK.

Oddelenie dizajnových systémov prináša tieto výhody:

  • Môžete používať najnovšie štýly Cupertino a Material widgetov bez toho, aby ste museli aktualizovať celé Flutter SDK.
  • Vieme rýchlejšie a častejšie schvaľovať príspevky a aktualizácie.
  • Pripravujeme pôdu pre štýlovo neutrálny katalóg základných widgetov Flutteru, čo v budúcnosti uľahčí tvorbu vlastných dizajnových systémov.

Ako migrovať

Na migráciu vášho projektu na nové samostatné balíčky spustite tento príkaz:

dart fix --apply --code=migrate_design_widgets

Tento nástroj automaticky aktualizuje vaše importy z package:flutter/material.dart a package:flutter/cupertino.dart na nové samostatné balíčky.

Poznámka: Ak migračný nástroj narazí na problém pri aktualizácii vášho súboru pubspec.yaml (známa počiatočná chyba), môžete to vyriešiť manuálnym spustením flutter pub add material_ui (a cupertino_ui, ak ho používate) a následným opätovným spustením dart fix --apply.

Pôvodné dizajnové knižnice v jadre SDK majú byť formálne zastarané v nadchádzajúcom jesennom stabilnom vydaní v novembri. Ak migrujete balíček v rámci ekosystému, považujte tento krok za major vydanie.

Premostenie medzery pri migrácii

Aby sa uľahčilo premostenie medzery počas migrácie ekosystému na nové samostatné dizajnové knižnice, material_ui a cupertino_ui obsahujú migračné nástroje. MaterialUiCompatibilityBridge umožňuje vašej aplikácii migrovať na samostatné balíčky okamžite, aj keď niektoré vaše závislosti stále používajú staršie importy z jadra SDK.

Napríklad môžete zabaliť svoju aplikáciu do kompatibilného mostíka takto:

import 'package:material_ui/material_ui.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: const Color(0xFF6750A4)),
      ),
      builder: (BuildContext context, Widget? child) {
        return MaterialUiCompatibilityBridge(child: child!);
      },
      home: const HomeScreen(),
    );
  }
}

Oddelené lokalizácie

V rámci tohto prechodu bol rozdelený aj flutter_localizations. Lokalizačné delegáty a preložené reťazce pre Material a Cupertino widgety sa teraz nachádzajú v balíčkoch package:material_ui, respektíve package:cupertino_ui.

Pred:

import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:flutter/material.dart';

// ...
localizationsDelegates: const <LocalizationsDelegate<dynamic>>[
  GlobalCupertinoLocalizations.delegate,
  GlobalMaterialLocalizations.delegate,
  GlobalWidgetsLocalizations.delegate,
],

Po:

import 'package:material_ui/material_ui.dart';

// ...
localizationsDelegates: GlobalMaterialLocalizations.delegates,

Nastavením localizationsDelegates na GlobalMaterialLocalizations.delegates sa teraz zahrnú aj delegáty pre Cupertino a Widgets, čo zjednodušuje nastavenie.

Otvorené pre príspevky

Vďaka zmrazeniu príspevkov do knižníc Material a Cupertino ešte v apríli sme dokázali zabezpečiť plynulú migráciu. Knižnice, ktoré na vás čakajú v material_ui a cupertino_ui, sú tie isté knižnice, ktoré už používate.

Teraz, keď sme pripravení zrušiť toto zmrazenie, môžete sa tešiť na pravidelné opravy a nové funkcie v nových balíčkoch, s vydaniami plánovanými zatiaľ týždenne. Zároveň s radosťou oficiálne otvárame tieto balíčky pre príspevky komunity.

Príprava na ďalšiu vlnu aktualizácií od Apple

Keďže Xcode 27, iOS 27 a macOS 27 prichádzajú túto jeseň, intenzívne sme sa sústredili na to, aby bol Flutter pripravený na nadchádzajúce aktualizácie. Aby vaši používatelia nezažili prekvapenia hneď v prvý deň, odporúčame otestovať vaše aplikácie s beta verziami Apple už teraz.

Okrem toho, kvôli podpore Xcode 27 boli zvýšené minimálne podporované verzie OS:

  • iOS
    • predošlé minimum 13
    • nové minimum 15
  • macOS
    • predošlé minimum 10.15
    • nové minimum 12

Povinný životný cyklus UIScene

SDK iOS 27 teraz vyžaduje životný cyklus UIScene pre všetky aplikácie založené na UIKit. Aplikácie zostavené s Xcode 27, ktoré neprijmú UIScene, sa pri spustení nespustia.

Pre väčšinu aplikácií Flutter CLI túto migráciu vybaví automaticky počas buildu. Manuálna migrácia je však potrebná, ak máte vlastný natívny kód v AppDelegate alebo používate pluginy, ktoré sa stále spoliehajú na starší životný cyklus aplikácie. V takom prípade musíte migrovať manuálne podľa sprievodcu adopciou UIScene/Delegate.

Postupné ukončovanie podpory Intel Macov

V súlade s prechodom Apple na čipy Apple Silicon Flutter postupne ukončuje podporu Macov s procesormi Intel. Zrušili sme automatizované testy na hardvéri Intel a Flutter CLI teraz vypisuje upozornenia pri builde na hostiteľoch Intel alebo pri cielení na duálne architektúry. Tieto upozornenia sa v budúcom vydaní zmenia na chyby.

Zostavovanie aplikácií pre macOS výhradne pre ARM64 si môžete zapnúť už teraz spustením flutter config --enable-macos-arm64-only.

Pokrok pri Swift Package Manageri

Komunita urobila neuveriteľný pokrok pri prechode na Swift Package Manager – 92 zo 100 najpoužívanejších iOS pluginov je už migrovaných. Ak ste Swift Package Manager predtým vypli, môžete ho znova skúsiť zapnúť pomocou flutter config --enable-swift-package-manager.

Keďže CocoaPods je teraz v režime údržby, pluginy, ktoré nemigrujú na SwiftPM, časom prestanú fungovať. Nemigrované pluginy zároveň dostávajú nižšie hodnotenie na pub.dev.

Toto vydanie tiež prináša optimalizované časy buildu vďaka vylepšeniu build pipeline odfiltrovaním zbytočných SwiftPM schém už v skorej fáze procesu.

Smerujeme k predvolenému Wasm

Aktívne pracujeme na tom, aby bol WebAssembly (Wasm) pre webové aplikácie vo Flutteri predvolene zapnutý, čo prinesie do prehliadača výkon blízky natívnym aplikáciám. Ak ste svoje webové aplikácie s Wasm ešte netestovali, môžete si ho zapnúť už dnes pomocou parametra --wasm pri release builde:

flutter build web --release --wasm

Pri príprave na tento prechod majte na pamäti, že Wasm vyžaduje migráciu vašej kódovej základne na nový balíček pre JS interoperabilitu (package:web), keďže staršia knižnica dart:html nie je podporovaná. Aktualizácia závislostí projektu často automaticky vyrieši tieto staršie problémy s interoperabilitou.

Aby sme pomohli škálovať väčšie webové aplikácie, toto vydanie tiež prináša experimentálnu podporu odloženého načítavania (deferred loading) pre Wasm. Táto funkcia, dostupná pod príznakom na main kanáli, umožňuje rozdeliť vašu Wasm aplikáciu na menšie, lenivo načítavané moduly a optimalizovať tak počiatočný čas načítania:

bash

flutter build web --release --wasm --enable-wasm-deferred-loading

Moderná grafika prichádza na desktop vďaka Impelleru

Sme odhodlaní urobiť z desktopových platforiem plnohodnotné ciele pre vysokovýkonnú grafiku. Vo Flutteri 3.47 sa Impeller stáva predvoleným rendererom pre macOS, Windows a Linux.

Ak ste s Impellerom ešte nepracovali, ide o novú generáciu vykresľovacieho enginu Flutteru, postaveného od základov ako náhrada za Skia. Zacielením na moderné hardvérové API (ako Metal na macOS a Vulkan na Windows a Linuxe) Impeller kompiluje pevnú sadu shaderov už pri builde, namiesto ich dynamickej kompilácie za behu. Tým sa odstraňuje krátke sekanie pri prvom prehraní animácie, takzvaný shader compilation jank, a animácie sú od prvého snímku plynulé.

Pokrok pri experimentálnej podpore viacerých okien

V spolupráci s Canonical, a podpore z rád komunity, rozširujeme naše experimentálne desktopové API pre prácu s oknami. Linux a Windows teraz podporujú vyskakovacie okná (popup), čo umožňuje vytvárať natívne kontextové menu a nástrojové panely.

Môžete tiež zavolať windowHandle na platformovo špecifických kontroléroch a získať priamy ukazovateľ na podkladové natívne okno (HWND, NSWindow alebo GtkWindow).

Pridali sme tiež nové API pre okná automaticky prispôsobené veľkosti obsahu, ktoré umožňuje vytvárať bežné aj dialógové okná automaticky prispôsobené veľkosti ich obsahu.

Flavors pre desktop

Windows a Linux teraz podporujú Flutter flavors (MacOS podporuje flavors už dlhšie).

Váš súbor pubspec.yaml môže napríklad používať rôzne assety pre rôzne flavors:

yaml

flutter:
  assets:
    - path: assets/flavor_a/images
      flavors:
        - flavor_a
    - path: assets/flavor_b/images
      flavors:
        - flavor_c

Konkrétny flavor určíte pomocou voľby --flavor. Napríklad:

  • flutter build windows --flavor flavor_a
  • flutter build linux --flavor flavor_a

Ostrejší text na desktope

Desktopové obrazovky majú často nižšiu hustotu pixelov ako mobilné displeje, no majú väčší grafický výkon. Aby sa dosiahol ostrejší text a čistejšie vektorové krivky na desktope, Flutter engine pri použití Impelleru teraz na macOS, Linuxe a Windows využíva vykresľovanie pomocou Signed Distance Function (SDF).

Stabilné náhľady a aktualizácie GenUI

Widget Previews sú stabilné

Flutter Widget Preview je teraz stabilný a umožňuje okamžite vykresliť, preskúmať a iterovať na jednotlivých UI komponentoch bez potreby zostavovať alebo spúšťať celú aplikáciu.

Pokračujúci vývoj GenUI

Ekosystém Flutteru sa naďalej vyvíja tak, aby vyhovoval potrebám vývojárov, ktorí pomocou GenUI vytvárajú nové druhy agentických zážitkov pre svojich používateľov. Nedávno vyšla verzia 0.10.0 balíčka genui, ktorá prináša množstvo opráv a nových funkcií.

Čas na upgrade

Všetko je pripravené a základy sú položené. Ostáva už len priniesť tieto vylepšenia na váš lokálny počítač:

flutter upgrade

Tešíme sa, čo všetko postavíte s touto novou a vylepšenou verziou Flutteru!

Tento článok je čiastočným prekladom originálu What's new in Flutter 3.47 od Flutter tímu. Pre viac detailov ohľadom zmien v novej verzii odporúčame prečítať si originál dostupný v angličtine.

O autorovi

Jakub Bateľ

Navrhnúť článok

Komentáre (1)

Prihláste sa a pridajte komentár.

Mario Chamuty pred 5 dňami

Awesome clanok 👏

Táto stránka používa cookies na zlepšenie vášho zážitku. Nastavenia