Google Flutter - używacie? Jak oceniacie?

0

Witam, dopiero ostatnio dowiedziałem się o istnieniu narzędzia jakim jest Google Flutter (dla niewiedzących w skrócie: Flutter to narzędzie programistyczne, ułatwiające pisanie aplikacji jednocześnie na systemy Android i iOS).
Używacie tego narzędzia w pracy, a może swoich prywatnych projektach? Jak ludzie oceniają to narzędzie? Gdybym miał do napisania większą apkę w ograniczonym czasie to lepiej uczyć się Javy do napisania jej tylko na Androida, czy warto dodatkowo poświęcić troszkę czasu na Flutter-a i "za darmo" mieć także wersję na iOS?

1

Ucz się Kotlina i pisania aplikacji natywnych na Androida, próg wejścia jest mniejszy i więcej materiałów w sieci. Później pewne koncepcje będą dla Ciebie bardziej przyjazne gdy spróbujesz pisać w Flutterze.

0

Flutter póki co to jedna wielka niewiadoma, więc obstawianie wszystkiego na tę kartę może być mało rozsądne.
Rozwój ww. narzędzia zależy głównie od Googla i tego czy faktycznie za X lat namaszczą go jako główny sposób rozwoju oprogramowania na ichniejszy OS.

0

Moze cos z tego Fluttera bedzie a moze...
https://imgs.xkcd.com/comics/standards.png

0

Bawiłem się kilka razy Flutterem. Jest o tyle fajny, że szybko można uzyskać ładne efekty, ale nie interesuje mnie z dwóch powodów. Po pierwsze lepszym rozwiązaniem do wielu platform jest moim zdaniem natywne współdzielenie kodu albo aplikacja webowa. Po drugie to dopóki Flutter nie będzie wspierał na Androidzie zapisania stanu aplikacji wraz ze śmiercią procesu, dopóty nie jestem w stanie go traktować bez rezerwy.

1

Używam Fluttera w pracy i polecam. Porównam z pisaniem w natywnym iOSie:

  • Dobrze przemyślana architektura: flutter renderuje każdy piksel więc tworząc UI mamy pełną kontrolę, można robić różne dziwne animacje na poziomie natywnych.
  • System widgetów: Podoba mi się o wiele bardziej niż edytowanie storyboardów. Zamiast bawić się z NSLayoutConstraint mamy widżet do marginesów, centrowania, układania w wiersze i kolumny, itp. Jest to bardziej czytelne, kod można ocenić podczas code review, reużywanie widoków jest łatwiejsze.
  • Hot reload: Twórcy fluttera oficjalnie to wspierają, dlatego działa to całkiem nieźle. Edytujemy kod i po zapisaniu zmiany są nanoszone bez zabijania aplikacji. Bez tego tworzenie widoków w kodzie byłoby męczarnią.
  • Dobra integracja z IDE: używam VSCode i działa to świetnie, lepiej niż Xcode. Podpowiadanie składni, refactoring, autoformatowanie.
  • Wydajność: UI działa płynnie, nie zacina się.
  • Narzędzia: We flutterze wszystko można robić z linii poleceń: stworzyć projekt, uruchomić go, odpalić testy, włączyć symulator, zainstalować pakiety.

Oczywiście nie jest to jakaś idealna techologia:

  • Dart: dosyć lipny język z prymitywnym systemem typów, połączenie Javy z JavaScriptem, Parsowanie jsonów to po prostu mordęga. Chociaż przyznam że ma też ciekawe rzeczy: mixiny, async/await, składnia konstruktorów.
  • Google: firma znana z ubijania technologii
  • Brakujące funkcjonalności: wspomniany przez poprzednika brak wznawiania stanu aplikacji, nie do końca natywna obsługa klawiatury, itp.
  • Integracja z natywnymi komponentami: chcąc np. mieć czytnik kodów kreskowych zmuszeni jesteśmy do korzystania z lipnej jakości pluginów, albo forkowania ich.
0

Dopiero co wyszła wersja 1.0 więc jeszcze dużo rzeczy brakuje w flutterze. O ile google tego nie ubije, to jeszcze dużo czasu upłynie zanim będzie można w tym pisać aplikacje dla klientów. Nie wspominam tu o dużych projektach których pisanie w takich technologiach jak flutter, react native czy xamarian to samobójstwo. Co innego małe projekt czy g**no apki.

0

Hej hej! Wybaczcie górnictwo ale chciałbym podbić temat i nie zakładać nowego wątku. Jak Waszym zdaniem ma się Flutter na początku '20? Czy po ponad roku od zadania pytania przez OP'a poszlibyście w tę technologię?

0

Osobiście nie korzystałem ale robiłem kilka dni temu ofertowanie w imieniu swojego klienta pośród dostawców aplikacji mobilnych i 6 z 14 firm zasugerowało wykonanie jej we Flutterze, 2 w RN a pozostali natywnie. Większość tych firm to były dość duże softearehausy, a sama aplikacja dość złożona. Kilka firm pytałem o Fluttera i słyszałem same pozytywy, jednak osobiście wole RN z uwagi na większą dojrzałość i community, pozdrawiam

0

Ciekawi mnie co z Javą pod Androidem? Uczę się teraz Javy i widzę, że pisanie aplikacji pod Android to teraz Flutter i Kotlin. Poza backendem gdzie jeszcze czysta Java ma zastosowanie? Czy ten język pomału umiera?

1

Java na chwilę miała flirt z mobilkami. Straciła to i od razu krzyk że umiera. Od ponad 10 lat Java to głównie aplikacje serwerowe. Wielu ją atakuje z każdej strony, ale managerowie projektów aplikacji webowych są staroświeccy i będą chcieć żeby używać Javy przez kolejne 10 czy więcej lat

2

Ale nikt nie zabrania pisać w Javie na Androida. Jak chcesz w Javie, to pisz w Javie. Nic tu nie umiera, w Javie zrobisz wszystko to, co i w Kotlinie. Nikt Javy nie wycofał z Androida i nie wycofa.

Co do Fluttera, to według mnie warto się uczyć, bo to może być przyszłościowe. To będzie funkcjonalnie (bo nie ze względu na architekturę i sposób działania) taki lepszy odpowiednik Electrona - na wszystkie platformy - desktop, Android, iOS, ale też web i na nowy system Fuchsja (o którym na razie niewiele wiadomo). Według mnie, za daleko to już zaszło, żeby Google to teraz zaorał.

Wersja na Androida i iOS jest już gotowa do zastosowań produkcyjnych i wyprzedza o kilka długości ReactNative i Xamarina pod każdym względem. A zwłaszcza pod względem wydajności, czyli to, co w końcu najbardziej się liczy dla użytkowników końcowych. No, może zaletą Xamarina jest język C#, tylko co z tego, skoro wynik pracy to powolna, niestabilna kobyła?

Niektórzy wieszają psy na języku Dart, bo brak im tam ficzerów z C#, czy Scali. Ale imo to przesadzone, Dart jest za to prosty do nauki i najważniejsze rzeczy ułatwiające życie posiada. Zwłaszcza przejście z ReactNative powinno być proste, bo to mniej więcej podobny paradygmat.

0

Trochę odkopię wątek bo właśnie rozpocząłem swoją przygodę z Flutterem:)

Jako programista C++, poczułem się wypalony zawodowo i postanowiłem spróbować języka, który nie wypluwa pierdyliarda błędów linkera przy próbie dołączenia obsługi socketów. Z racji zapotrzebowania na rynku chciałem też żeby to był język typowo mobilkowy.

Tworzyłem już apki w Qt i w Xamarinie i crossplatform który sugerują producenci jest grubo przesadzony. Dla mnie prawdziwy cross jest wtedy kiedy w ogóle nie musimy tworzyć oddzielnego kodu dla specyficznej platformy. Co z tego, że część kodu jest współdzielona, jeśli i tak musimy przeglądać dokumentację dla każdego systemu jeśli chcemy np. włączyć wifi. W Xamarinie chociaż wszystko da się napisać w jednym kodzie (C#) bo w Qt niektórych rzeczy bez kodu Javy zwyczajnie nie zrobisz i koniec.

Co prawda we Flutterze nie miałem jeszcze okazji pisać bardziej skomplikowanych apek ale wygląda na to, że wreszcie jest to prawdziwy crossplatform. Swoją apke sprawdziłem na iOSie dopiero kiedy całkowicie skończyłem ją na Androidzie i ku mojemu ogromnemu zdziwieniu odpaliła od pierwszego kopa :) Dodatkowo na Antku schodziłem do najniższej wersji na jaką miałem emulatory i zawsze bez problemu. Jak dla mnie działa to naprawdę dobrze.

0

Ja się przesiadam na fluttera.

0

@bilborrd: ale musisz sobie uświadomić, że to i tak polega na końcu na kompilowaniu kodu innego dla każdej platformy w wielu przypadkach. Tyle, że jest to opakowane we wtyczki i nie musisz o to dbać, do czasu aż trafisz na coś, na co nikt wtyczki żadnej nie zrobił

0

Dokładnie tak jak napisał @Meini. Kod specyficzny dla platform będzie zawsze wymagał osobnego kodu dla każdej z nich + w języku docelowym. Niezależnie od tego co to będzie. Flutter ma tu jedyną przewagę, że Google pompuje w niego od groma pieniędzy, dzięki czemu rozwija się szybko społeczność i powstaje dużo pluginów, których w innych niszowych rozwiązaniach jeszcze może nie być.

0
Michał Sikora napisał(a):

Dokładnie tak jak napisał @Meini. Kod specyficzny dla platform będzie zawsze wymagał osobnego kodu dla każdej z nich + w języku docelowym. Niezależnie od tego co to będzie.

No właśnie Google twierdzi, że programy flutter kompilowane są do kodu maszynowego, więc język będzie zawsze ten sam.

0

Ale jakie to ma znaczenie, jeśli do napisania aplikacji jest potrzebny różny kod źródłowy?

1

Ale czego nie zrozumiałeś? Dostajesz standardowe paczki zawierające kod dla wszystkich platform. Używasz ich i nie musisz do nich zaglądać.

Np obsługa shared preferences. Tu kod dla iOS: https://github.com/flutter/plugins/tree/master/packages/shared_preferences/shared_preferences/ios a tu dla Androida: https://github.com/flutter/plugins/tree/master/packages/shared_preferences/shared_preferences/android

Jeżeli teraz użyjesz shared preferences w swoim programie, to na Androidzie dołączany i kompilowany jest kod dla Androida w Javie lub Kotlinie, a na iOS kod przeznaczony na iOS w Swift. Nie musisz o tym wiedzieć jeżeli jest paczka, która robi co chcesz, ale jeżeli zechcesz kiedyś obsłużyć coś, na co nie ma wtyczki, to będziesz i tak musiał pisać kod na wszystkie platformy, które chcesz obsłużyć

2

Tylko po co ten Dart... Po Kotlinie ciężko się na to przestawić. A właściwie to "cofnąć".

1

Prawdopodobnie chcą mieć pełną kontrolę. Swój język i pełna swoboda w realizacji swojej wizji. Dart jest coraz lepszy, chociaż faktycznie niektóre założenia mogą wyglądać dziwnie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1