Google to firma, która niejednokrotnie pokazała, że potrafi wprowadzać rewolucje na rynku IT, jednak mało kto spodziewał się, że z takim powodzeniem wprowadzi ją także do tworzenia wieloplatformowych aplikacji mobilnych. W grudniu 2018 roku przedstawiono pierwszą produkcyjną wersję frameworka o nazwie Flutter, która pozwalała na jednoczesne pisanie aplikacji na dwa wiodące mobilne systemy operacyjne, czyli Android oraz iOS. Dla części z Was może to nie brzmieć zbyt innowacyjnie – w końcu technologii oferujących podobne możliwości jest wiele jak np. React Native czy Xamarin. Jednak to, co wyróżnia Fluttera to możliwość szybkiego tworzenia atrakcyjnych wizualnie aplikacji o wydajności znanej nam ze świata aplikacji natywnych. Te cechy sprawiają, że szybko zyskuje on na popularności oraz coraz bardziej wyróżnia się na tle konkurencji.

Źródło: https://repository-images.githubusercontent.com/187402016/928d2380-79dc-11e9-8982-91c0d50261e1

Źródło: https://raw.githubusercontent.com/flutter/engine/master/docs/flutter_overview.svg

Jak to działa?

O ile sam Flutter może być rozpatrywany jako rewolucyjny to sama zasada jego działania już taka nie jest. W dużym uproszczeniu jest to schemat dobrze znany chociażby z popularnego silnika graficznego Unity. Zamiast bazować na systemowych komponentach natywnych aplikacji, osadzany jest w nich jedynie kontener, wewnątrz którego rysowany jest cały interfejs użytkownika. Daje to pełną kontrolę nad elementami osadzonymi w aplikacji oraz umożliwia dostarczanie spójnych interfejsów użytkownika na różne platformy. Jest to osiągnięte poprzez zastosowanie silnika graficznego Skia, który jest częścią min. Google Chrome.

Silnik ten jest oparty o język C++, który idealnie się sprawdza do osadzenia na wielu platformach, jednak obecnie nie cieszy się tak dużą popularnością jak kiedyś. Aby dotrzeć do jak największej grupy programistów, w celu komunikacji z silnikiem zamiast C++ używa się języka Dart. Jego składnia jest prosta oraz czerpie inspiracje z wielu popularnych języków, co znacznie ułatwia naukę tej technologii. Jak widać na schemacie powyżej, silnik graficzny stanowi część warstwy pośredniej pomiędzy frameworkiem, który jest używany przez programistów, a platformą, na której uruchamiana jest aplikacja. Największą zaletą tego rozwiązania jest znaczne uniezależnienie tego narzędzia od zmian na poszczególnych platformach.

Z perspektywy programisty, znajomość Darta wystarczy do skorzystania z wszystkich możliwości Fluttera – zarówno implementacji widoków jak i logiki aplikacji. Bardzo istotnym elementem tego frameworka jest „widget” czyli komponent, z którego budowana jest struktura widoku aplikacji. Widgetem może być tekst, obrazek lub bardziej skomplikowane elementy. Możliwość zagnieżdżania jednego widgetu w drugim otwiera duże możliwości ich kompozycji oraz tworzenia nawet bardzo zaawansowanych elementów interfejsu użytkownika w stosunkowo krótkim czasie.

 

Zalety Fluttera:

O ile sam wstęp był pełen superlatyw na temat tego narzędzia, to zalet jest o wiele więcej!

Open Source

Flutter jest rozwijany przez społeczność, co w dużej mierze stanowi o jego sile i popularności. Dzięki temu rozwój tej technologii jest bardzo dynamiczny, a co najważniejsze uwzględnia uwagi społeczności.

Deklaratywny kod

Składnia języka Dart idealnie się sprawdza do tworzenia interfejsów użytkownika. Deklaratywny kod, (czyli taki, który pokazuje co się chce osiągnąć, a nie jak) dobrze pasuje do tego rozwiązania.

Biblioteka komponentów

Pomimo tego, że Flutter nie wykorzystuje natywnych komponentów interfejsu użytkownika to w swojej bibliotece posiada widgety, które je naśladują. Dzięki temu, tworzenie widoków jest szybkie, a widoki na różnych platformach są spójne.

Wydajność

Poprzez zastosowanie silnika Skia do renderowania widoków, wydajność aplikacji napisanych w tej technologii jest porównywalna do aplikacji natywnych. Aplikacja zaimplementowana według sztuki powinna być wstanie wyświetlać 60 klatek na sekundę.

Hot reload

Długi czas kompilacji zanim zobaczy się efekt swojej pracy to jedna z bolączek programistów aplikacji natywnych. Wychodząc naprzeciw temu problemowi Flutter oferuje tzw. “Hot reload” czyli natychmiastowe przeładowanie treści wyświetlanych na urządzeniu lub symulatorze. Jest to nie tylko udogodnienie, ale znaczna oszczędność czasu, co czyni tę technologię idealną do prototypowania.

Komunikacja z aplikacją natywną

Poza wyświetlaniem treści oraz reagowaniem na gesty wiele aplikacji mobilnych korzysta z bardziej zaawansowanych funkcjonalności smartfonów. Odczytywanie położenia z GPS, dostęp do książki kontaktów czy też komunikacja z wykorzystaniem Bluetooth to tylko niektóre z nich. Aby móc z nich skorzystać Flutter zapewnia kanał komunikacji z aplikacją natywną, w której jest osadzony- „Platform channels”. Przy jego wykorzystaniu można zachować separację od platformy nie tracąc jej pełnych możliwości.

Osadzanie natywnych widoków

Jednym z większych udogodnień przy migrowaniu projektów do Fluttera jest „Platform view” czyli komponent umożliwiający osadzanie natywnych widoków z Androida oraz iOS jako widget. Jest to niezwykle przydatne w wypadku integracji z zewnętrznymi serwisami, które dostarczają własne elementy interfejsu użytkownika. Zamiast czekać na opublikowanie oficjalnej wersji takiego elementu we Flutterze, programiści sami mogą opakować go w widget, a następnie osadzić w aplikacji.

Animacje

Efektowne animacje to bez wątpienia wielka zaleta tego narzędzia. Dodatkowo proces ich implementacji jest na tyle prosty, że nawet mało skomplikowane aplikacje mogą zostać wzbogacone o przykuwające oko efekty.

Modularność widoków

Ponieważ każdy element widoku jest widgetem i można je swobodnie ze sobą komponować otwiera to wiele możliwości przed programistami. Tworząc widoki można opakowywać poszczególne grupy widgetów w jeden widget, a następnie wykorzystywać go w wielu miejscach aplikacji. W efekcie daje to dużą oszczędność czasu przy tworzeniu interfejsu użytkownika o ujednoliconym wyglądzie.

Wsparcie Google

Pomimo tego, że Flutter jest dystrybuowany jako open source to Google nadal bardzo wspiera ten projekt. Udział dużego zespołu programistów z tej firmy umożliwia publikowanie kolejnych wersji tego narzędzia raz na kilka miesięcy. Jak na standardy branży jest to niezwykle często biorąc pod skalę tego przedsięwzięcia co jest bardzo pozytywnie odbierane przez programistów.

Narzędzia do CI/CD

Już podczas pierwszej publikacji produkcyjnej wersji Fluttera dużą uwagę zwróciła obecność narzędzi do testowania oraz instrukcji konfiguracji systemów Continous Integration oraz Continous Delivery. W czasach, gdzie w branży kładzie się duży nacisk na jakość wytwarzanego oprogramowania ma to bardzo duże znaczenie i pozwala rozważać użycie tej technologii w obecnych projektach.

Wieloplatformowość

Prace nad jednoczesnym pisaniem aplikacji mobilnych, desktopowych oraz webowych oznaczają, że już w niedalekiej przyszłości Flutter może stać się jeszcze bardziej atrakcyjną technologią niż dotychczas. Perspektywa pisania jednej aplikacji na tak wiele platform to bez wątpienia coś, co może zachęcić biznes do inwestycji w rozwiązania związane z tą technologią.

 

Wady Fluttera

Jak sami mogliście zobaczyć, zalet Fluttera jest naprawdę mnóstwo jednak coś takiego jak technologia idealna nie jest istnieje. Należy o tym pamiętać podejmując decyzję czy dany projekt lepiej jest zrealizować natywnie czy za pomocą tego narzędzia.

Poniżej znajdują się istotne wady, na które warto zwrócić uwagę:

Wczesne stadium rozwoju

Nie minął nawet rok od czasu publikacji wersji 1.0 Fluttera, przez co trzeba mieć na uwadze, że posiada jeszcze wiele niedopracowanych obszarów. Szybkie tempo publikacji sprawia, że Flutter staje się coraz bardziej stabilny, ale nadal są miejsca, w których może sprawić nam problem.

Niedopracowane rozszerzenia

Ilość rozszerzeń napisanych przez społeczność jest imponująca, ale nie zawsze idzie ona w parze z jakością. Łatwo jest natknąć się na pluginy, zawierające błędy, przez co należy bardzo dobrze sprawdzić zanim doda się go do projektu.

Osadzanie natywnych widoków

Pomimo wielu zalet, osadzanie widoków natywnych we Flutterze niestety nie jest wolne od wad. Stosując takie rozwiązanie, musimy się przygotować na problemy natury wydajnościowej, co może objawić się mniej płynnym działaniem względem otaczających widgetów.

Komponenty z iOS

Wcześniej wspomniana biblioteka widgetów bardzo przyspiesza pracę, ale posiada jedną wadę. Komponenty z grupy Cupertino (czyli te, które imitują komponenty z systemu iOS) nie są jeszcze w 100% dopracowane, co może sprawić problemy, jeśli naszym celem jest idealne odwzorowanie tego typu widoków.

Zespół developerski

Do tworzenia aplikacji we Flutterze potrzebna jest znajomość języka Dart, lecz niestety to nie wszystko. Aby pisać lub modyfikować pluginy komunikujące się aplikacją natywną trzeba mieć w zespole osoby specjalizujące się zarówno w Androidzie jak i iOS.

 

Podsumowanie

Flutter to bez wątpienia ogromny krok w kierunku tworzenia wieloplatformowych aplikacji mobilnych. Chociaż obecnie ta technologia nie jest wolna od wad oraz nie nadaje się do wszystkich zastosowań już teraz stanowi realną konkurencję dla takich rozwiązań jak React Native czy Xamarin. Analizując szybkie tempo rozwoju tej technologii można się spodziewać, że już niedługo może stać się liderem w swojej kategorii.

Już wkrótce kolejny materiał na temat praktycznego zastosowania Fluttera, więc stay tuned! 🙂

Interesujesz się mobile i chcesz to przełożyć na ciekawe projekty? Dołącz do nas!

Oceń ten wpis
(7)
MakoLab korzysta z plików cookie w celu realizacji usług zgodnie z Polityką prywatności. Możesz określić warunki przechowywania lub dostępu do cookie w Twojej przeglądarce lub konfiguracji usługi.
Obserwuj MakoLab na portalach społecznościowych
Chcesz być na bieżąco z MakoNewsami? Zapisz się na nasz newsletter.