Neuroróżnorodność w miejscu pracy
21.12.20234 min
Przemysław Luśnia
R&D Center Viessmann

Przemysław LuśniaSenior Flutter DeveloperR&D Center Viessmann

Od czego zacząć przygodę z Flutterem, gdy czasu brak?

Sprawdź, jak rozpocząć programowanie we Flutterze, jeśli nie masz dużo czasu na naukę.

Od czego zacząć przygodę z Flutterem, gdy czasu brak?

Wielu z mobile i web developerów staje przed decyzją, czy przejść na Fluttera. Materiałów jest mnóstwo i łatwo można się zgubić. Nawet w tych oficjalnych. Ten artykuł to esencja potrzebna do zapoznania się z tą technologią. Starałem się, by każdy link i każde słowo było przemyślane i istotne.

Każdy z nas jest inny i wszyscy mamy własne, lepsze lub gorsze sposoby na efektywnie uczenie się. Jednak czase bywamy niezwykle drobiazgowi, gdyż natura naszego zawodu tego wymaga. Toteż w skrupulatności podczas nauki nowej technologii łatwo zabrnąć w ślepą uliczkę

Zakładamy, że czytający ma doświadczenie w programowaniu z innej platformy. Inaczej zaprezentowana heurystyka nie zadziała. No, i że Flutter jest zainstalowany zgodnie z instrukcją.

Język

Dart. Nauka nowego języka to częsty powód do litanii narzekań. Otóż jeśli ktoś zna Javę, bądź Javascript, nie musi specjalnie zgłębiać Darta właśnie, by zacząć przygodę z Flutterem. Programiści C#, TypeScript, czy  Swifta także stoją na uprzywilejowanej pozycji - jest on do nich podobny. Na końcu artykułu jest ćwiczenie we Flutterze i do wykonania go wcale nie trzeba znać Darta. 

Jeśli jednak chciałbyś zacząć, to warto poznać wyróżniające język cechy (150 sekund wystarczy). Potem przejrzyj introduction, tylko nie zrażaj się konstruktorami. Są nietypowe i posiadają wiele cech, a więc i możliwości. Zrozumienie ich wymaga praktyki. Poćwiczyć możesz tutaj. No i jest Copilot.

IDE

Wybieramy IDE spośród VSCode, Intellij i Android Studio. Polecam ten pierwszy, bo jest bardzo lekki, chodzi jak żyleta i w zupełności wystarcza.

Jeśli wywodzisz się ze środowiska Android Studio/Intellij, to zainstaluj plugin. Czy upierdliwie będzie przejście z innego IDE? Z pluginem nie tak bardzo.

Tworzenie projektu

Komendą flutter create my_default_app tworzymy domyślny projekt posiadający:

  • kod z typowym licznikiem kliknięć zawierającym UI i prosty stan, wraz z komentarzami tłumaczącymi, co się dzieje w kodzie
  • konfigurację projektu w pliku pubspec.yaml
  • domyślną strukturę plików

Domyślna struktura plików projektu

1. pubspec.yaml

pubspec.yaml jest plikiem konfiguracyjnym do zarządzania parametami projektu, jak nazwa i wersja, zależnościami, czy assetami. 

Pubspec - link do poczytania. Najważniejsze, by rozumieć pubspec constraints, czyli jak definiujemy wersje zależnych bibliotek. Zwykle w pewnym zakresie, np. 

environment:
 sdk: ^3.1.0

jest tożsame z

environment:
sdk: '>=3.1.0 <4.0.0'

Gdy na przykładowym projekcie wywołamy komendę flutter pub get, generuje się plik pubspec.lock. Ten zawiera konkretną dependencję. Zwykle 3.1.0 dla naszego przypadku, ale jeśli doszło do conflict resolution, to wersję która została wybrana przez algorytm.

2. Foldery android, ios, linux, macos, web, windows

Odpowiadają za pliki pozwalające na uruchomienie projektu Flutterowego na wybranej platformie. Jeśli nie planujemy projektu na daną platformę, możemy bez żalu usunąć folder.

3. lib

To w nim znajduje się kod. Domyślnie tworzony jest plik main.dart w którym za pomocą funkcji runApp inicjalizowane jest Flutterowe drzewo widgetów.

4. gitignore

Pojawia się pytanie - czego nie commitowac? Oficjalne wskazówki są tutaj, natomiast projekt wygenerowany komendą flutter create już zawiera odpowiednie reguły.

Ot, cała struktura podstawowego projektu.

Czym jest pub.dev?

pub.dev to oficjalne repozytorium, w którym znajdują się biblioteki napisane w języku Dart. Niektóre z Flutterem, niektóre z czystym Dartem, bez zależności Flutter. Dlaczego? Nie wszystkie biblioteki wymagają UI, a więc Fluttera.

Te polecane przez twórców Fluttera oznaczone są tagiem flutter-favorite. Jednak już tutaj czycha na nas wiele pułapek. Sporo nieaktualizowanego (tzw. abandonware) lub nieznanego - mało lajków (sic!) - oprogramowania, wśród którego jednak możemy znaleźć nietypowe widgety, bądź pluginy łączące kod natywny z różnych platform pod jednym interfejsem napisanym w Dart.

Wśród nich takie znajdujące się w tysiącach projektów:

I tu uwaga, wyjątek od reguły. Najczęściej lajkowaną paczką jest Get, która zdaniem wielu jest ślepą uliczką w nauce Fluttera i sprawdza się w zasadzie tylko w MVP.

Gotowe recepty

Gdy znasz inne platformy, istnieje lista tłumacząca wiele zagadnień na Fluttera. Kilka przykładów:

Android:

iOS:

Ćwiczenie

Zapoznaj się z krótkimi materiałami:

Następnie zaimplementuj podobny ekran. Kolory bez znaczenia ;)

Dla ułatwienia pobierz beginner_exercise - jest to postawiony projekt z miejscem na rozwiązanie oznaczonym TODO. Na branchu “solution” znajdziesz rozwiązanie.

Wskazówki:

  • Aby zbudować projekt wywołaj flutter pub get z linii poleceń
  • Aby uruchomić projekt wywołaj flutter run z linii poleceń
  • Platforma dowolna, ja testowałem na Chrome i powyższa grafika pochodzi ze zminimalizowanego na szerokość okienka Chrome
  • Kolory dobieramy wartościami: 50, 100, 200, …, 900
  • Widget z grafiką “check.svg” tworzymy:
    SvgPicture.asset('assets/images/check.svg')
  • Widget z “Dash Fainted” tworzymy:
    Image.network('https://docs.flutter.dev/assets/images/dash/dash-fainting.gif')
  • Ostatni “Row” jest zdecydowanie najtrudniejszy i mocno opcjonalny
  • W razie problemów więcej wskazówek możesz znaleźć tu 

A jeśli to było przyjemne, proponuję zanurzyć się w dokumentacji Fluttera i stworzyć drugi ekran, dodać stan przez StatefulWidget, nawigację… 

<p>Loading...</p>