Mając kilka lat expa w backendzie, i na froncie muszę przyznać, że teraz to stosunkowo łatwo jest programować we flutterze.
Ja w niecałe 2 tygodnie przestawiłem się na Darta i Fluttera i mam w nim już 70% apki. Oczywiście, aby wygląd we fluterze wszędzie nie wyglądało tak samo, to trzeba odjeżdżać w kierunku pomyślanych guzików, żywych animacji i jest to stosunkowo proste. Łatwo pisać animacje, łatwo robić generyczne komponenty, pisać asynchronicznie, bo flutter już od początku na to wszystko czeka. Także jeśli ktoś zna flex, react i trochę ogarnia oop to łatwo się w tym odnajdzie. Dawno nie widziałem takiego frameworka gdzie tak łatwo wszystko samo się pisze, gdzie biblioteki ładnie się ze sobą zazembiają, gdzie wszystko działa od samego początku, gdzie hot reloading od razu fajnie działa, także widać, że wiele rzeczy jest dopracowanych i to jest ogromny plus.
Mnie najbardziej pomogły kawałki kodu Indyjskich programistów, kody co prawda dziadowe, ale w jednym pliku ^^ więc mogłem w ten sposób szybko dojść do efektów które mnie interesowały i szybciej zrozumieć na co na nie wpływa. Niestety część najciekawych efektów osiąga się na podobnym poziomie sztuczek co w CSS, ale wtedy programowanie wyglądu byłoby już zbyt banalnie :-)
Moje subtelne wrażenia są takie, że o ile wszystko spełnia bardzo przyzwoite normy to samo kodowanie we fluterze jest stosunkowo nudne, dart jest nudny, flutter jest nudny, mobilne apki też w sumie są nudne... nie wyobrażam sobie klepania w tym hurtowo zleceń, ani siedzenia po 6h dziennie przez parę lat - współczuje tutaj ludziom. Ja sam nie mogę się doczekać aż skończe projekt, by wrócić do czegoś ciekawszego.
Z ciekawostek:
-
dart rozwiązał częściowo konflikt typowania dynamicznego vs statycznego. Tu Dart wybrał oba. Statyczne do większości rzeczy, a dynamiczne podejście do pracy na styku API. Chociaż jestem zwolennikiem dynamicznego typowania to tutaj podejście statyczne jest OK, bo flutter ma mnóstwo komponentów (np. taki padding który w htmlu jest atrybutem stylu, to tutaj jest osobną klasą) i dlatego statyczne typowanie pomaga w tym gąszczu się odnaleźć. Z drugiej strony to bardziej wina API, bo jakby postawili bardziej na ekspresję to te kody lepiej by się czytało, a tak mam wrażenie, że pluję obiektami reprezentującymi znaczniki, ale bardziej do odczytu przez maszynę niż człowieka.
-
dart umożliwia robić obiekty niemodyfikowalne, ma do tego składnię, także plus że ten kierunek w ogóle rozważają. Niestety mutowalne obiekty częściej są widoczne, i tu z wielkim bólem żałuje, że nie poszli w tylko to na całość od samego początku, w stylu by literały były stałe, by wszystko było stałe.
-
hot reloading to dobry kierunek, ale możliwości są duuużo słabszy w stosunku do REPL z Clojure. REPL przebija
-
flutter nie pozwala na coś takiego jak hot code push, czyli wysłanie poprawek aplikacji obchodząc czekanie na publikację w google/apple store; dla wielu firm jest to jedyne ograniczenie dla którego jeszcze nie migrowali w kierunku fluttera.