Na co dzień pracuję z technologiami dedykowanymi aplikacjom internetowym. Mam styczność zarówno z bazami danych, logiką serwerową jak i frontendem. Co jakiś czas lubię jednak przełamać rutynę codzienności i spróbować czegoś nowego. W taki sposób zrodził się pomysł spróbowania swoich sił w tworzeniu aplikacji mobilnych używając platformy Flutter.
To jest pierwszy z serii wpisów, które będą dokumentować moją przygodę z tą platformą. Zapraszam Cię do towarzyszenia mi w tej wyprawie!
Czym jest Flutter?
Mówiąc w skrócie Flutter, to technologia stworzona przez Google’a. Pozwala tworzyć multiplatformowe mobilne aplikacje, które działają zarówno na systemach Android, jak również na urządzeniach z systemem iOS. Co ważne, używamy tutaj jednego języka programowania jakim jest Dart. To oznacza, że nie musimy uczyć się osobno języka umożliwiającego tworzenie natywnych aplikacji na Androida i języka dedykowanego aplikacjom iOS. Używając Fluttera posiadamy jeden projekt, który możemy uruchomić na różnych platformach.

W skład Fluttera wchodzą dwa podstawowe elementy:
- Framework – kolekcja funkcji, pakietów oraz widgetów potrzebnych do działania aplikacji
- SDK (Software Development Kit) – pakiet narzędzi umożliwiający tworzenie i kompilowanie kodu na natywny kod dedykowany platformom Android i iOS
Zainteresowanie Flutterem ciągle wzrasta. Wiele dużych firm deklaruje wykorzystanie tej technologii w swoich projektach. Na przykład Alibaba Group stworzyło swoją nową aplikację mobilną w oparciu o Fluttera. Smaczku dodaje fakt, że pobrało ją już ponad 50 mln użytkowników.
Kilka słów o języku DART
Jest to język programowania opracowany przez Google, którego można używać zarówno po stronie przeglądarki (kompilowany do JavaScript) jak i po stronie serwera. Składnia tego języka przypomina java i c#. Kilka lat temu było głośno o pomyśle Google, które chciało, aby Dart był oficjalnie wspieranym językiem w Chrome. Pomysł nie zdobył popularności i Google szybko się z niego wycofało. Obecnie o tym języku znów zrobiło się głośniej, ponieważ Flutter opiera się właśnie na nim. Ogromnie jestem ciekaw jego możliwości. Sam nie miałem jeszcze styczności z Dart’em, więc póki co stawiam tutaj kropkę, a dalsze opinie będę zamieszczać wraz z kolejnymi wpisami 🙂
Architektura (w skrócie)
Skupmy się teraz na założeniach dotyczących architektury aplikacji budowanych z użyciem Fluttera. Po pierwsze szukając informacji o architekturze często znajduję stwierdzenia “UI as a code” oraz “everything is a widget” . Twórcy Fluttera skupili się na tym, aby interfejs użytkownika tworzyć jako swoiste drzewo widgetów. Trzeba zapamiętać, że we Flutterze wszystko jest widgetem.
Aplikacja jest głównym widgetem. Poszczególne ekrany są kolejnymi odnogami. Następnie widoczne na ekranach sekcje są kolejnymi zagnieżdżonymi widgetami, które zawierają kolejne coraz to mniejsze widgety. I tak dalej i tak dalej, aż dojdziemy do najmniejszego pojedynczego elementu.

Na powyższym rysunku zaznaczono różne widgety, które tworzą całą aplikację. Mamy tu zarówno podstawowe widgety takie jak Text i Button jak również złożone elementy – np widget Column, który zawiera w sobie wcześniej wymienione.
Zgodnie z założeniem twórców, interfejs użytkownika oraz jego logikę należy tworzyć wyłącznie z użyciem kodu. Nie znajdziecie tutaj edytora wizualnego, gdzie zbudujecie UI metodą drag&drop. Wszystko budujemy z poziomu kodu.

Dodatkowo mamy możliwość wykorzystania logiki, która pozwala zweryfikować na jakiej platformie aplikacja jest uruchomiona i w zależności od tego wykonać odpowiednio przygotowany fragment naszego kodu. Dzięki czemu możemy zadbać o to, by aplikacja wyglądała i zachowywała się na obu platformach dokładnie tak, jak chcemy.
Kompilacja
Flutter SDK zawiera gotowy zestaw narzędzi, który przygotowuje i kompiluje kod do natywnych aplikacji platform docelowych. Nie ma tutaj kompilacji z wykorzystaniem rodzimych elementów każdej z platform. Flutter dostarcza własny silnik, który kontroluje cały ekran i pozwala renderować każdy piksel. Dzięki temu, możemy być pewni, że w gdy stworzymy customowy przycisk to będzie on wyglądać tak samo na wszystkich platformach. Mamy pełną kontrolę nad tym jak ma wyglądać budowany UI.
Twórcy Fluttera zapewniają też, że ich narzędzia umożliwiają kompilacje gwarantujące wysoką wydajność zarówno na systemie Android jak i iOS.
W tym wpisie przedstawiłem dość ogólnie samą platformę. Teraz czas na konkrety. W kolejnym artykule opiszę proces konfiguracji wszystkich potrzebnych narzędzi oraz uruchomimy pierwszą aplikację.
Posty z tej serii będą pojawiac się w każdy poniedziałek. Mam nadzieję, że zaciekawi Was ta platforma i spróbujecie wraz ze mną ją poznać oraz stworzyć swoją własną mobilną aplikację 🙂
Do następnego 🙂
