Wybierasz się (pewnie wirtualnie, ale jednak…) na rozmową kwalifikacyjną na stanowisko Flutter Developera? Może jesteś dopiero na początku ścieżki programisty i zastanawiasz się czy Flutter to rozwiązanie dobre dla Ciebie? Chcesz poznać podstawowe nazewnictwo związane z Flutterem? Świetnie! W tym wpisie (który będzie cały czas aktualizowany) postaram się zawrzeć wszystkie najważniejsze informacje na temat Fluttera. Jeśli coś jest niezrozumiałe, jeśli Twoim zdaniem coś można lepiej napisać, jeśli coś powinienem poprawić albo po prostu brakuje tutaj czegość – daj mi proszę znać w komentarzach!
Czym jest Flutter?
Flutter to rozwiązanie (technologia) open-source stworzona przez Google w 2018 roku. Flutter to NIE JEST język programowania. To zestaw narzędzi pozwalający na tworzenie aplikacji dla Androida, iOS’a, Linuxa, Maca, Windows, a już za chwilę również dla web za pomocą jednego kodu (w dużym uproszczeniu). Aplikacje flutterowe korzystają z języka Dart.
Czym jest Dart?
Dart to język programowania, który został stworzony przez firmę Google w 2011 roku. Jest to język zorientowany obiektowo, oparty na klasach wykorzystujący składnię język C. Pierwotnie język ten wykorzystywany był przede wszystkim do rozwiązań webowych, jednak to dzięki Flutterowi Dart stał się znany (i lubiany ;).
Jakie są zalety Fluttera?
- Doskonały sposób na rozwój cross-platformowych aplikacji
- Szybki development
- Wspaniała społeczność
- Świetna dokumentacja
- Hot reload
- Dostępność pakietów
- Natywny look and feel aplikacji zarówno w iOS jak i w Android
Konwencje nazewnictwa wykorzystywane we Flutterze
- UpperCamelCase – wykorzystywany przy tworzeniu klas, typów enum
- lowerCamelCase – stałe, metody i identyfikatory
- lower_case – nazwy bibliotek, pakietów, katalogów i plików
Czy jest plik pubspec.yaml i jakie jest jego zadanie?
Plik pubspec.yaml to plik, w którym definijuemy wszystkie zależności oraz tzw. assety (pliki zewnętrzne, grafiki, fonty) wykorzystywane w projekcie. W tym pliku definiujemy również opis i nazwę dla projektu.
Jakie są podstawowe komendy wykorzystywane przy developmencie we Flutterze?
flutter doctor – komenda sprawdzająca stan zainstalowanego środowiska. Wynikiem działania tej komendy jest informacja na temat ew. problemów, braków oraz zadań do wykonania celem naprawy stanu.
flutter clean – komenda, która czyści cache naszego projektu.
flutter upgrade – komenda aktualizująca zainstalowane środowisko Fluttera do najnowszej wersji w aktualnie użytkowanym kanale. Aby sprawdzić jaki kanał jest aktualnie wykorzystywany używamy komendy flutter channel. Zmiana kanał możliwa jest za pomocą komendy: flutter channel <channel-name> np. flutter channel dev.
flutter pub get – komenda pobierająca wszystkie zależności zdefiniowane w pliku pubspec.yaml. Jeśli do pliku zostały dopisane jakieś assety czy nowe pakiety wykonanie tej komendy jest niezbędne aby zmiany były widoczne w projekcie.
flutter pub upgrade – komenda pobiera wszystkie wylistowanie w pliku pubspec.yaml zależności w najnowszej dostępnej wersji.
Czym są flutterowe widgety Jakie mamy typy widgetów ?
We Flutterze wszystko jest widgetem. Widget to podstawowy element interfejsu użytkownika. Wyróżniamy dwa typy widgetów: StatelessWidget oraz StatefulWidget.
Widgety StatelessWidget nie wymagają stanu, ich build method jest uruchomiony tylko jeden raz i nie mogą zmienić później swojego stanu podczas działania aplikacji. Jeśli chcemy odświeżyć taki widget musimy wywołać jego nową instancję.
Widgety StatefulWidget posiadają swój, zmienny, stan. Takie widgety mogą być tworzone dowolną ilość razy w ciągu cyklu życia aplikacji (gdy aplikacja jest uruchomiona).
Co to jest stan i co robi setState() ?
Stan to zbiór zmiennych, wartości czy ustawień widgetu. Wszystko co możemy zmienić (np. tekst, kolor) może być częścią danego stanu.
setState() to jeden ze sposobów aktualizacji stanu. Za pomocą setState() możemy odświeżyć i przebudować screen aktualizując wszystkie potrzebne informacje.
Jaki jest cykl życia (lifecycle) widgetu StatefulWidget?
- createState()
- initState()
- didChangeDependencies()
- build()
- didUpdateWidget()
- deactivate()
- dispose()
Jaka jest różnica mięcy hot reload, hot restart i pełnym restartem?
Flutterowy Hot reload to bardzo przyjemny sposób na szybkie zbudowanie aplikacji, poprawkę bugów czy sprawdzenie nowych rozwiązań. Hot reload „wstrzykuje” zaktualizowany kod do wirtualnej maszyny (VM) Darta, a framework Fluttera po zaktualizowaniu nowch funkcji czy pól automatycznie przebudowuje drzewo widgetów pozwalając szybko zobaczyć efekty pracy.
Hot restart aktualizuje zmiany w kodzie, przebudowuje wszystkie widgety restartując aplikację tracąc tym samym jej poprzedni stan. Zabiera zdecydowanie więcej czasu niż hot reload.
Full restart to pełny restart aplikacji. Rekompiluje cały kod, trwa najdłużej ale zapewnia, że wszystkie zmiany wprowadzone w aplikacji będą widoczne.
Czym jest klasa Future?
Future reprezentuje potencjalny wynik, wartośc lub błąd, które może się pojawić/być dostępnym za jakiś czas. Otrzymując Future’a możemy stwirzyć callbacka, który obsłuży otrzymany wynik (lub error). Future jest wynikiem operacji asnychronicznej (asynchronous operation). Future może mieć dwa stany: uncompleted lub completed.
Czym sie różni programowanie synchroniczne od asynchronicznego ?
W synchronicznym programowaniu kod wykonywany jest linkija po linijce. Kolejne synchroniczne operacje wykonyane są dopiero w momencie gdy poprzednie bloki zostały wykonane. W programowaniu asynchronicznym pozwalamy aplikacji na działanie niezależnie od wyniku poszczególnych operacji.
Async i await – do czego służą ?
Są to słowa dzięki którym zadeklarujemy funkcje asynchroniczne oraz ich wyniki. Słowo kluczowe async wykorzystujemy do zaznaczenia, iż dana funkcja jest asynchroniczna. Await wykorzystywany jest do otrzymania rezultatu asynchronicznego wyrażenia. Await działa jedynie w funkcjach oznaczonych jako asynchroniczne za pomocą async.
Gdzie szukać pracy jako Flutter Developer?
Flutter jest ciągle stosunkowo nowym rozwiązaniem, jednak bardzo szybko zyskuje na popularności. Jeszcze rok temu próżno było szukać na polskim rynku ofert pracy związanych z tą technologią, a dziś sytuacja zaczyna wyglądać już zupełni inaczej. Flutter developerzy zaczynają być poszukiwani nie tylko przez startupy, ale również w dużych firmach powstają zespoły mające za zadanie zająć się tym cross-platformowym rozwiązaniem. Oto kilka linków od których powinieneś zacząć szukając pracy jako Flutter Developer: JustJoin, Bulldogjob, Pracuj.pl, Nofluffjobs, Linkedin.