Google IO
V květnu jsme se dočkali dalšího Google IO a s tím několika novinek ve Flutteru a Dartu. S aktualizací Flutteru 3.22 je WASM nyní stable. Impeller je dostupný k vyzkoušení na Androidu. Bezkonkurenčně nejvíce nás ale nadchlo preview Dart maker.
Makra, makra budou všude 🥺
Už příští rok bychom mohli dát sbohem “build_runneru” a využívat zabudovaná makra přímo v Dartu. Komunita už se činí a přicházejí první experimenty - např. Data Class od Felixe nebo přepis Riverpodu od Remiho. Každopádně mějte na paměti, že macra jsou stále v preview a je před námi ještě velký kus práce (https://github.com/dart-lang/language/issues/3809).
Ostatně i my v NetGlade s makry experimentujeme a rádi bychom přepsali náš auto_mappr do maker.
![](https://framerusercontent.com/images/erOmHtLMqUNppzQ3pSamGadTWDw.png)
Flutter na AI steroidech 💊
Pokud nemáte GitHub Copilota zkuste Codeium – https://codeium.com/. Jedná se o free alternativu, kterou jsme v týmu začali používat a zatím si ji nemůžeme vynachválit. Pravda, občas nás pozlobí integrace, ale v celkovém součtu to není nic zásadního.
AI pomocník se ukázal jako skvělý nástroj hlavně při nedávném přepisu jedné části aplikace. Významně nám ušetřil čas i nervy. Máloco programátory potěší víc.
AI tip: Konverze Freezed na sealed třídy
U AI ještě zůstaňme. Pokud máte v projektu Freezed a využivali jste jeho Union třídy, pravděpodobně je pomalu přepisujete na Dart 3 Sealed classy. Pokud ne, tak je na čase o tom uvažovat. Ostatně sám autor knihovny Freezed tento postup doporučuje.
Pro konverzi se nám velmi osvědčilo využití ChatGPT, který zvládne na jedničku konverzi složitých Freezed tříd, včetně složitostí jako společné gettery, pomocné metody a další.
Zkuste to a posuďte sami.
ListenableBuilder vs AnimatedBuilder: znáte rozdíl? 🎓
Věděli jste, že pokud potřebujete reagovat na změnu, např. PageController nebo jakéhokoliv jiného listenable, můžete pro to snadno využít ListenableBuilder?
A víte, že AnimatedBuilder není nic jiného než ListenableBuilder? Takže následující kód dělá to samé:
Jediný rozdíl je, že AnimatedBuilder schovává listenable getter, který se navenek tváří jako “animation”. To znamená, že i jakýkoliv animation controller můžete použít v rámci ListenableBuilder.
Proč existují dva widgety? AnimatedBuilder můžeme vnímat jen jako syntax sugar, pro snadnější orientaci v kódu, kde AnimatedBuilder jasně říká, že následující kód definuje animaci widgetu.
A tím pro dnešek končíme.
Tak na viděnou zase za měsíc! 🙌