Dramat to jest w Xamarinie raczej. Hello world we Flutterze to apk o rozmiarze około 5 MB, chyba że wygenerujesz apk dla wszystkich architektur, czego się zwykle nie robi, a do sklepu i tak powinieneś wrzucić bundle, czyli klient dostanie odpowiednie abi.
Jak pisałem, nie korzystałem nigdy z Xamarina, więc nie wiem. Natomiast od 4 MB do 4.5 MB dla każdej aplikacji to moim zdaniem bardzo dużo.
Co do RN to jest okropnie niestabilne, aktualizacja wtyczki potrafi rozwalić projekt, a nawet do podstawowych rzeczy potrzebne są wtyczki rozwijane przez społeczność, często miernej jakości. To jest bagno, chyba nic poważniejszego w tym nie pisałeś. Wygląda jak beta, a nie gotowy produkt.
Zgadzam się co do stabilności. Sam to zaznaczyłem przecież. No i też pisałem, że nic poważnego w RN nie robiłem. Natomiast widziałem efekty poważnych aplikacji napisanych z RN i były dobre. Żeby nie było widziałem też dobrze napisane aplikacje w Xamarinie i Flutterze, ale najmniej problemów widziałem w dobrze napisanych aplikacjach w RN. Natomiast kwestia wtyczek i bibliotek to patalogia taka sama jak wszędzie - Flutter, RN, natywne. Wszędzie jest kupa dennego kodu.
Flutter jest rozwijany aktywnie i z głową i w wielu miejscach uwalnia nas od guana obecnego w natywnym Androidzie, jak cykle życia, fragmenty ich obsługa, widoki i ich api i inne schizy.
Fakt, jest rozwijany aktywnie. Czy z głową, to ciężko mi jeszcze powiedzieć, ale ich podjeście do zgłaszanych problemów jest momentami śmieszne. Zgłaszasz coś, pytają się kilka razy czy naprawili to w jakimś patchu, odpowiadasz że nie, pytają kolejny raz, nie masz już siły odpowiadać a im samym nie chce się sprawdzić i zamykają issue. Albo wersjonowanie Fluttera jest irytujące. Niby korzystają z semantic versioning a potrafią API w stabilnej wersji zmienić przy podbiciu patch
zarówno we Flutterze jak i w bibliotekach. Chociaż ten problem wynika bardziej z tego jak ułomny jest Dart z brakiem przeładowywania metod.
Co do reszty, to nie uważam, żeby cykl życia był czymś złym. Aplikacja uruchomiona w środowisku telefonu powinna być go świadoma. Flutter też ma zresztą cykl życia, tylko mniejszy i bardziej ukryty, ale też potrafi momentami zaskoczyć. Ale rozumiem zarzut. Google przez jakieś pierwsze 7 lat w przykładach uczył ludzi pisać kod tak, że wzsystkie klasy praktycznie były zależnego od cyklu życia, więc naturalnie robiła się z tego kaszana. Teraz też to robią, ale jest to mniej lub bardziej zjadliwe à la ViewModel
. Fragmenty i ich API zaprojektowane przez upośledzonego konia, to wiedza powszechna, ale też wystarczy nie korzystać z fragmentów i problem znika.
Chociaż Flutter ma wady, to wiele rzeczy upraszcza, zwłaszcza w zakresie tworzenia bardziej zaawansowanego gui. Nawet tak głupia rzecz, jak dwie linie tekstu na toolbarze w natywnym Androidzie wymaga jakichś dziwacznych kombinacji, dziedziczenia po standardowych klasach i nadpisywania metod, zamiast wstawić 2 textboxy na toolbar i tyle.
Zgadzam się, że deklaratywne podejście do UI w kodzie ma dużo więcej sensu, daje większą swobodę i trudniej źle zaprojektować kod, co przecież zaznaczyłem. Ale nie rozumiem przykładu z Toolbarem. Znaczy się, rozumiem poniekąd, ale wystarczy stworzyć własny widok i problem znika z głowy. To przecież nie jest ani trochę inne od tego, co byśmy zrobili we Flutterze.
<LinearLayout>
<TextView/>
<TextView/>
</LinearLayout>