{"id":2593,"date":"2023-02-20T00:00:00","date_gmt":"2023-02-20T00:00:00","guid":{"rendered":"https:\/\/appvinio.runbyit.com\/https-appvinio-com-pl-aktualnosci-dlaczego-warto-tworzyc-aplikacje-we-flutterze\/"},"modified":"2023-11-07T14:52:22","modified_gmt":"2023-11-07T14:52:22","slug":"dlaczego-warto-tworzyc-aplikacje-we-flutterze","status":"publish","type":"post","link":"https:\/\/appvinio.com\/pl\/dlaczego-warto-tworzyc-aplikacje-we-flutterze\/","title":{"rendered":"Dlaczego warto tworzy\u0107 aplikacje we Flutterze?"},"content":{"rendered":"<p data-renderer-start-pos=\"1\">Okej, przyznajemy, \u017ce tytu\u0142 jest tendencyjny. Ale po przeczytaniu tego artyku\u0142u sami stwierdzicie, \u017ce pytanie \u201edlaczego warto\u201d, a nie \u201eczy warto\u201d, to jedyne s\u0142uszne pytanie! Znajdziecie tutaj nie tylko argumenty, ale te\u017c przedstawienie technologii i kilka s\u0142\u00f3w o ma\u0142o znanym j\u0119zyku Dart.<\/p>\n<h2 id=\"Co-to-jest-Flutter?\" data-renderer-start-pos=\"290\">Co to jest Flutter?<button class=\"css-779anb\" aria-label=\"Skopiuj \u0142\u0105cze do nag\u0142\u00f3wka\"><\/button><\/h2>\n<p data-renderer-start-pos=\"311\">Pierwszy raz o Flutterze mo\u017cna by\u0142o us\u0142ysze\u0107 w 2015 roku, kiedy to Google podczas jednej z konferencji zapowiedzia\u0142o stworzenie zestawu narz\u0119dzi dla programist\u00f3w, kt\u00f3ry umo\u017cliwia\u0142by tworzenie aplikacji mobilnych dla systemu Android. Cho\u0107 wtedy jeszcze nie m\u00f3wiono stricte o Flutterze, bo pocz\u0105tkowo nowy pomys\u0142 koncernu mia\u0142 nosi\u0107 nazw\u0119 Sky. Wersja Alpha (0.0.6) ukaza\u0142a si\u0119 dwa lata p\u00f3\u017aniej w maju, a do u\u017cytku powszechnego Flutter wszed\u0142 pod koniec 2018 roku.<\/p>\n<p data-renderer-start-pos=\"774\">Projekt zacz\u0105\u0142 rozwija\u0107 si\u0119 bardzo szybko dzi\u0119ki pracownikom Google i dzia\u0142aniom niezale\u017cnych programist\u00f3w. W 2021 roku wydano drug\u0105 wersj\u0119 SDK (ang. <em data-renderer-mark=\"true\">Software Development Kit<\/em>), dzi\u0119ki kt\u00f3remu programi\u015bci mog\u0105 pisa\u0107 aplikacje nie tylko na Androida i iOS, ale tak\u017ce aplikacje webowe i desktopowe. We Flutterze wykorzystuje si\u0119 wci\u0105\u017c ma\u0142o popularny j\u0119zyk programowania Dart, zaprezentowany przez Google w 2011 roku. <span id=\"129d557e-58ac-417d-ae39-4fecc90c626d\" data-renderer-mark=\"true\" data-mark-type=\"annotation\" data-mark-annotation-type=\"inlineComment\" data-id=\"129d557e-58ac-417d-ae39-4fecc90c626d\">Uwaga dla programist\u00f3w, kt\u00f3rzy nigdy nie mieli z nim styczno\u015bci: je\u015bli znasz Kotlin lub JavaScript nauka Darta nie powinna sprawi\u0107 wi\u0119kszych problem\u00f3w.<\/span><\/p>\n<h2 id=\"Do-czego-go-por\u00f3wnujemy,-czyli-aplikacje-natywne-i-inne-aplikacje-hybrydowe\" data-renderer-start-pos=\"1340\">Do czego go por\u00f3wnujemy, czyli aplikacje natywne i inne aplikacje hybrydowe<button class=\"css-779anb\" aria-label=\"Skopiuj \u0142\u0105cze do nag\u0142\u00f3wka\"><\/button><\/h2>\n<p data-renderer-start-pos=\"1417\">\u017beby wykaza\u0107 przewag\u0119 Fluttera, musimy najpierw wyja\u015bni\u0107, od czego ma by\u0107 lepszy. Po pierwsze: aplikacje natywne, czyli takie zorientowane na konkretn\u0105 platform\u0119 \u2013 Android lub iOS. R\u00f3\u017cni si\u0119 to wykorzystywanym do pisania j\u0119zykiem. W przypadku Androida b\u0119dzie to Java lub Kotlin, a dla iOS u\u017cywa si\u0119 opracowanego przez Apple Swift \/ Objective-C. W obu przypadkach istniej\u0105 dedykowane narz\u0119dzia programistyczne. S\u0105 one niezawodne, <span id=\"e142ae84-3b1a-4333-a32d-4b046f937d3a\" data-renderer-mark=\"true\" data-mark-type=\"annotation\" data-mark-annotation-type=\"inlineComment\" data-id=\"e142ae84-3b1a-4333-a32d-4b046f937d3a\">tylko, <\/span>w momencie, gdy klient potrzebuje aplikacji i na Androida, i na iOS, dla programisty oznacza to pisanie dw\u00f3ch osobnych aplikacji od A do Z.<\/p>\n<p data-renderer-start-pos=\"1994\">Drugie nasze odniesienie to aplikacje hybrydowe, kt\u00f3re s\u0105 tworzone jednocze\u015bnie na kilka system\u00f3w i \u0142\u0105cz\u0105 w sobie rozwi\u0105zania natywne i webowe. Oznacza to, \u017ce \u201eszkielet\u201d aplikacji jest taki sam, a do niego dopisuje si\u0119 tylko konkretne \u201efragmenty\u201d dedykowane okre\u015blonej platformie. W\u015br\u00f3d innych framework\u00f3w do tworzenia hybrydowych aplikacji mobilnych, obok Fluttera, mo\u017cna wymieni\u0107 np. React Native i Ionic.<\/p>\n<h2 id=\"A-teraz-korzy\u015bci:\" data-renderer-start-pos=\"2403\">A teraz korzy\u015bci:<button class=\"css-779anb\" aria-label=\"Skopiuj \u0142\u0105cze do nag\u0142\u00f3wka\"><\/button><\/h2>\n<p data-renderer-start-pos=\"2422\">Skoro ju\u017c wiemy, co por\u00f3wnujemy i do czego, odpowiedzmy na pytanie z tytu\u0142u. Nie mo\u017cemy nie napomkn\u0105\u0107 na pocz\u0105tku (jeszcze raz, bo to wa\u017cne!), \u017ce Flutter to projekt <em data-renderer-mark=\"true\">open source<\/em>, a wi\u0119c rozwijany nie tylko przez firm\u0119, ale i przez niezale\u017cnych programist\u00f3w. To pozwoli\u0142o mu w cztery lata od publikacji wyj\u015b\u0107 na miejsce lidera w\u015br\u00f3d podobnych aplikacji. Praca we Flutterze to te\u017c du\u017ca oszcz\u0119dno\u015b\u0107 dla klienta \u2013 oszcz\u0119dno\u015b\u0107 i czasu, i pieni\u0119dzy. \u201eNie jest to oszcz\u0119dno\u015b\u0107 tylko na pierwszym kroku, kiedy tworzymy pierwsz\u0105 wersj\u0119 aplikacji, ale te\u017c na ka\u017cdym kolejnym, kiedy rozbudowujemy t\u0119 aplikacj\u0119 czy j\u0105 poprawiamy\u201d \u2013 dodaje Rafa\u0142, nasz CTO. Ale po kolei.<\/p>\n<h3 id=\"Elastyczno\u015b\u0107\" data-renderer-start-pos=\"3079\">Elastyczno\u015b\u0107<button class=\"css-779anb\" aria-label=\"Skopiuj \u0142\u0105cze do nag\u0142\u00f3wka\"><\/button><\/h3>\n<p data-renderer-start-pos=\"3093\">To, \u017ce we Flutterze aplikacje s\u0105 tworzone hybrydowo, ju\u017c sprawia, \u017ce deklasuje wszystkie technologie natywne. Nie mo\u017cna powiedzie\u0107, \u017ce dzi\u0119ki temu programista ma dwa razy mniej pracy, bo jednak opr\u00f3cz wsp\u00f3lnego \u201eszkieletu\u201d, programista w zale\u017cno\u015bci od case\u2019u, b\u0119dzie musia\u0142 doda\u0107 dodatkowe konfiguracje lub dopisa\u0107 dwie osobne cz\u0119\u015bci do obu system\u00f3w. Nadal jednak taki zabieg znacznie przyspiesza proces tworzenia aplikacji i w zale\u017cno\u015bci od projektu, obni\u017ca koszty o 30, a nawet 50%.<\/p>\n<h3 id=\"Wydajno\u015b\u0107\" data-renderer-start-pos=\"3579\">Wydajno\u015b\u0107<button class=\"css-779anb\" aria-label=\"Skopiuj \u0142\u0105cze do nag\u0142\u00f3wka\"><\/button><\/h3>\n<p data-renderer-start-pos=\"3590\">Tak, wspominali\u015bmy o <span id=\"cd857f67-cc40-4490-af10-87e9eea08412\" data-renderer-mark=\"true\" data-mark-type=\"annotation\" data-mark-annotation-type=\"inlineComment\" data-id=\"cd857f67-cc40-4490-af10-87e9eea08412\">React Native<\/span> i Ionic. Tak, te\u017c pozwalaj\u0105 na tworzenie aplikacji hybrydowych. Od Fluttera r\u00f3\u017cni\u0105 si\u0119 jednak wydajno\u015bci\u0105. A raczej brakiem tej wydajno\u015bci (przynajmniej w przypadku Ionica, React Native jest ca\u0142kiem wydajny, jednak nie tak samo, jak Flutter). Byliby\u015bmy niesprawiedliwi, m\u00f3wi\u0105c, \u017ce nie nadaj\u0105 si\u0119 do niczego \u2013 przy prostych aplikacjach b\u0119d\u0105 dzia\u0142a\u0142y bez zarzutu, jednak schody mog\u0105 si\u0119 zacz\u0105\u0107, gdy w grze pojawi\u0105 si\u0119 bardziej skomplikowane operacje.<\/p>\n<p data-renderer-start-pos=\"4074\">Teoria teori\u0105, ale oddajmy g\u0142os naszemu praktykowi: \u201eZdarzy\u0142o nam si\u0119 raz, \u017ce przepisywali\u015bmy aplikacj\u0119 z jednej aplikacji hybrydowej na Fluttera, bo w \u015brodku znajdowa\u0142 si\u0119 skomplikowany wykres, kt\u00f3ry trzeba by\u0142o w zasadzie narysowa\u0107 samemu, i ta aplikacja pseudohybrydowa nie dawa\u0142a sobie rady \u2013 czas \u0142adowania by\u0142 za d\u0142ugi i u\u017cytkownicy skar\u017cyli si\u0119, \u017ce wszystko dzia\u0142a bardzo topornie. Po przepisaniu we Flutterze wszystko dzia\u0142a\u0142o od razu szybko i p\u0142ynnie\u201d. Punkt dla Fluttera.<\/p>\n<h3 id=\"Szybka-weryfikacja-kodu\" data-renderer-start-pos=\"4557\">Szybka weryfikacja kodu<button class=\"css-779anb\" aria-label=\"Skopiuj \u0142\u0105cze do nag\u0142\u00f3wka\"><\/button><\/h3>\n<p data-renderer-start-pos=\"4582\">Kolejna zaleta to funkcja Hot Reload, kt\u00f3ra pozwala na wprowadzanie zmian w momencie, gdy aplikacja jest w\u0142\u0105czona. Oznacza to, \u017ce zmiana b\u0119dzie widoczna od razu, bez konieczno\u015bci wy\u0142\u0105czania i uruchamiania aplikacji od nowa. Wyobra\u017acie sobie, \u017ce chcecie przetestowa\u0107 widok w r\u00f3\u017cnych konfiguracjach i za ka\u017cdym razem musicie od nowa w\u0142\u0105cza\u0107 aplikacj\u0119. Katorga. Flutter pokazuje zmiany od razu, dzi\u0119ki czemu te\u017c skraca czas pracy. Funkcja Hot Reload cz\u0119sto przydaje si\u0119 r\u00f3wnie\u017c podczas rozm\u00f3w z grafikiem.<\/p>\n<h3 id=\"\u0141\u0105czenie-komponent\u00f3w-technologii-natywnych\" data-renderer-start-pos=\"5086\">\u0141\u0105czenie komponent\u00f3w technologii natywnych<button class=\"css-779anb\" aria-label=\"Skopiuj \u0142\u0105cze do nag\u0142\u00f3wka\"><\/button><\/h3>\n<p data-renderer-start-pos=\"5130\">To punkt g\u0142\u00f3wnie dla os\u00f3b, kt\u00f3re troch\u0119 znajd\u0105 si\u0119 na technologii. Flutter umo\u017cliwia korzystanie jednocze\u015bnie z w\u0142asnych komponent\u00f3w i tych stworzonych specjalnie dla Androida i dla iOS. Dlatego te\u017c wybranie Fluttera nie oznacza, \u017ce mo\u017cliwo\u015bci zostaj\u0105 zamkni\u0119te jedynie w bibliotece oferowanej przez Google. Elastyczno\u015b\u0107 tego frameworku sprawia, \u017ce je\u015bli oka\u017ce si\u0119, \u017ce potrzebujemy zrobi\u0107 co\u015b w technologii natywnej, Flutter nie b\u0119dzie nak\u0142ada\u0142 \u017cadnych blokad czy ogranicze\u0144.<\/p>\n<h3 id=\"Mo\u017cliwo\u015b\u0107-konwertowania-na-aplikacje-webowe-i-desktopowe\" data-renderer-start-pos=\"5607\">Mo\u017cliwo\u015b\u0107 konwertowania na aplikacje webowe i desktopowe<button class=\"css-779anb\" aria-label=\"Skopiuj \u0142\u0105cze do nag\u0142\u00f3wka\"><\/button><\/h3>\n<p data-renderer-start-pos=\"5665\">Last but not least\u2026 Mo\u017cliwo\u015b\u0107 przeniesienia aplikacji mobilnej na wersj\u0119 webow\u0105 i desktopow\u0105 to nie jest funkcja, kt\u00f3r\u0105 charakteryzuje si\u0119 tylko Flutter, jednak warto podkre\u015bli\u0107, \u017ce r\u00f3wnie\u017c ni\u0105 dysponuje. To ponownie du\u017ca oszcz\u0119dno\u015b\u0107 dla klienta, bo nie trzeba b\u0119dzie pisa\u0107 zupe\u0142nie nowej, osobnej aplikacji \u2013 mo\u017cna wykorzysta\u0107 jedn\u0105, t\u0119 sam\u0105 warstw\u0119 logiczn\u0105, kt\u00f3rej u\u017cywamy we wszystkich wersjach.<\/p>\n<p data-renderer-start-pos=\"6066\">Podobnie jak w przypadku punktu o aplikacjach dla Androida i iOS-a nie oznacza to, \u017ce aplikacja zostanie przeniesiona jeden do jednego. Dlaczego? Cho\u0107by ze wzgl\u0119du na sam wygl\u0105d \u2013 w ko\u0144cu przegl\u0105darki otwierane s\u0105 zazwyczaj na du\u017cych ekranach, wi\u0119c trzeba b\u0119dzie odpowiednio dostosowa\u0107 interfejs. Nadal jednak \u201eszkielet\u201d pozostaje ten sam, dzi\u0119ki czemu koszty wytworzenia i przeniesienia aplikacji mobilnej na aplikacj\u0119 webow\u0105 czy desktopow\u0105 s\u0105 du\u017co ni\u017csze, zw\u0142aszcza je\u015bli nie maj\u0105 one \u017cadnych dodatkowych funkcji.<\/p>\n<h2 id=\"Wi\u0119c\u2026-dlaczego-wybieramy-Fluttera?\" data-renderer-start-pos=\"6583\">Wi\u0119c\u2026 dlaczego wybieramy Fluttera?<button class=\"css-779anb\" aria-label=\"Skopiuj \u0142\u0105cze do nag\u0142\u00f3wka\"><\/button><\/h2>\n<p data-renderer-start-pos=\"6619\">Sami zajmujemy si\u0119 Flutterem, odk\u0105d w og\u00f3le pojawi\u0142 si\u0119 na rynku. Na koncie mamy ju\u017c kilkadziesi\u0105t aplikacji napisanych przy pomocy tego SDK i przy ka\u017cdym projekcie Flutter sprawdza\u0142 si\u0119 doskonale. Czy mo\u017cemy zatem z czystym sercem poleca\u0107 go klientom? Bez zastanowienia!<\/p>\n<p data-renderer-start-pos=\"6892\">Zreszt\u0105 i klientom, i kolegom po fachu. Dla klient\u00f3w to przede wszystkim rozwi\u0105zanie oszcz\u0119dne i szybkie z jednoczesnym zachowaniem wysokiej jako\u015bci. Dodatkowo, dzi\u0119ki wsp\u00f3\u0142pracy z komponentami obu technologii natywnych Flutter oferuje szeroki wachlarz r\u00f3\u017cnych rozwi\u0105za\u0144, wi\u0119c klient dostanie dok\u0142adnie taki produkt, jaki sobie za\u017cyczy, bez \u017cadnych ogranicze\u0144 od strony technologicznej.<\/p>\n<p data-renderer-start-pos=\"7280\">Flutterem powinni zainteresowa\u0107 si\u0119 te\u017c programi\u015bci od tych z wieloletnim do\u015bwiadczeniem, po tych, kt\u00f3rzy dopiero stawiaj\u0105 pierwsze kroki w bran\u017cy. Opanowanie Fluttera nie powinno by\u0107 problemem dla nikogo, kto ma jakiekolwiek do\u015bwiadczenie z innymi j\u0119zykami i technologiami. Opr\u00f3cz tego jest bezp\u0142atny, wi\u0119c bez problemu dost\u0119pny nawet dla pocz\u0105tkuj\u0105cych freelancer\u00f3w.<\/p>\n<p data-renderer-start-pos=\"7651\">\n<p data-renderer-start-pos=\"7654\">Flutter to wdzi\u0119czne narz\u0119dzie nie tylko dla klient\u00f3w i ich bud\u017cet\u00f3w, ale i dla programist\u00f3w, bo praca z tym zestawem narz\u0119dzi jest naprawd\u0119 przyjemna, a jednocze\u015bnie pozwala na uzyskanie atrakcyjnego i sprawnie dzia\u0142aj\u0105cego efektu. I\u2026 m\u00f3wili\u015bmy, \u017ce po przeczytaniu artyku\u0142u sami si\u0119 z nami zgodzicie?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Okej, przyznajemy, \u017ce tytu\u0142 jest tendencyjny. Ale po przeczytaniu tego artyku\u0142u sami stwierdzicie, \u017ce pytanie \u201edlaczego warto\u201d, a nie \u201eczy warto\u201d, to jedyne s\u0142uszne pytanie! Znajdziecie tutaj nie tylko argumenty, ale te\u017c przedstawienie technologii i kilka s\u0142\u00f3w o ma\u0142o znanym j\u0119zyku Dart. Co to jest Flutter? Pierwszy raz o Flutterze mo\u017cna by\u0142o us\u0142ysze\u0107 w 2015 [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":2677,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[60],"tags":[61,51,68,43,69],"class_list":["post-2593","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-aktualnosci","tag-aplikacje","tag-aplikacje-mobilne","tag-dlaczego","tag-flutter","tag-korzysci"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/appvinio.com\/pl\/wp-json\/wp\/v2\/posts\/2593","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/appvinio.com\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/appvinio.com\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/appvinio.com\/pl\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/appvinio.com\/pl\/wp-json\/wp\/v2\/comments?post=2593"}],"version-history":[{"count":2,"href":"https:\/\/appvinio.com\/pl\/wp-json\/wp\/v2\/posts\/2593\/revisions"}],"predecessor-version":[{"id":2679,"href":"https:\/\/appvinio.com\/pl\/wp-json\/wp\/v2\/posts\/2593\/revisions\/2679"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/appvinio.com\/pl\/wp-json\/wp\/v2\/media\/2677"}],"wp:attachment":[{"href":"https:\/\/appvinio.com\/pl\/wp-json\/wp\/v2\/media?parent=2593"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/appvinio.com\/pl\/wp-json\/wp\/v2\/categories?post=2593"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/appvinio.com\/pl\/wp-json\/wp\/v2\/tags?post=2593"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}