Чому Flutter ідеально підходить для кросплатформенної розробки

Усі статті, обговорення, новини про Mobile — в одному місці. Підписуйтеся на телеграм-канал!

Усім привіт! Мене звати Ігор, і я працюю Flutter-розробником в компанії Anadea. Я впевнений, багато з вас помітили, що за останні роки Flutter активно зростає.

Часи, коли фреймворк був просто хайповою технологією і розробники закочували очі при його згадці, пророкуючи швидку смерть, давно минули. Смерті не сталося (на killedbygoogle ви Flutter не побачите). Він розвивається понад пʼять років, залучаючи все більше людей, і вже завоював звання найкращого фреймворку для кросплатформенної розробки.

Спільнота розробників надає безліч ресурсів та інформації для новачків і досвідчених розробників, зокрема велику кількість відкритих джерел, уроків, бібліотек та плагінів, що полегшує процес навчання та роботу з фреймворком.

Попит на Flutter надалі зростає, зокрема через поширення його використання для розробки вебзастосунків (Flutter для Web) та настільних застосунків (Flutter для Desktop). Це свідчить про значний успіх і визнання цього фреймворку на сучасному програмному ринку.

Тому настав час поговорити про це як про технологію, яка існує вже деякий час і існуватиме ще довго. Базуючись на своєму досвіді, я трохи розповім про конкуренцію Flutter з нативною розробкою та проаналізую ситуацію на ринку.

Статтю також можна прочитати англійською.

Чому Flutter — це круто

Отже, ось три найпривабливіші речі у Flutter, які надихають програмістів використовувати цей фреймворк. Але якщо ви не технічний спеціаліст, то не поспішайте закривати сторінку. Нижче ви знайдете переваги використання Flutter для бізнесу.

Кросплатформа

Менеджери завжди дивувалися: навіщо писати те саме для різних платформ (iOS, Android, Web, Desktop)? Тому з незапам’ятних часів світ заполонили різноманітні інструменти розробки, які допомагають об’єднати розробку для всіх платформ в одному проєкті — на одній базі коду і навіть на одній мові програмування. Серед них були (і залишаються) Xamarin, Ionic, React Native і Flutter — останній можна використовувати для написання чудових програм для iOS, Android та Web одночасно.

Окрім як для мобільних застосунків, я та мої колеги також використовували Flutter Web у продакшн-проєкті і навіть працювали там з Bluetooth Web (так, така технологія є, і її можна використовувати в Flutter).

Підтримка від Google

Flutter і мова програмування Dart (мова, на якій розробляються програми Flutter) є творіннями Google. Лідер галузі настільки сильно вірить у технології, що навіть випустив цілу операційну систему Fuchsia OS, інтерфейс якої побудовано на Dart. Це викликає оптимістичний настрій щодо майбутнього Flutter, хоча почуття щодо самої Fuchsia OS у мене доволі стримані.

Flutter постійно оновлюється та розвивається завдяки команді розробників інженерів Google, які працюють над виправленням помилок, вдосконаленням швидкості та продуктивності, а також додаванням нових функцій та можливостей. Google надає докладну та добре структуровану офіційну документацію для Flutter. Ця документація містить інструкції, приклади та матеріали для навчання, які спрощують процес вивчення та використання фреймворку.

Сумісний з Native

Остання і найбільша перевага Flutter — це можливість перетягувати нативний код у проєкт. Flutter дозволяє вам вставляти код, написаний на Swift, як плагін, і використовувати цю специфічну iOS-фічу. Є така ж можливість і на інших платформах, тож відповідь для всіх, хто думає, що Flutter не може все: він може, єдине питання — це час для реалізації.

Саме це спонукало мене перейти від нативної розробки Android до розробки Flutter: це неймовірна вбивча функція для бізнесу. Дуже поширена проблема з Xamarin, Ionic (та менше з React Native) полягає в тому, що вам потрібно вказати всі побажання відразу, тому що можуть виникнути ситуації, коли функція, яку хоче замовник після півроку або навіть після кількох років розробки, не може бути реалізована.

З Flutter цієї проблеми немає, адже він надає спеціальні пакети. Вони дозволяють розробникам звертатися до нативних API та функцій, які не підтримуються безпосередньо в Flutter. Завдяки цьому можна використовувати всі можливості платформи, коли це необхідно, і взаємодіяти з різними пристроями та сервісами, що підтримуються на певній платформі.

Також подивімося на кількість запитів: останні 12 місяців Flutter стабільно тримає перше місце серед кросплатформенних фреймворків за GoogleTrands та Statista. Тепер перейдемо від цифр до фактичного аналізу та переваг Flutter порівняно з нативними рішеннями.

Вартість розробки Flutter-застосунків

Нативні застосунки не мають суттєвих недоліків, і їхні користувачі можуть послуговуватися всіма видами складних функцій. Водночас їхня розробка та підтримка потребують значних інвестицій. Це тому, що для кожної платформи потрібна команда розробників.

Відповідно до їхніх особливостей обидві команди повинні адаптувати бізнес-логіку до ваших вимог і дублювати логіку інтерфейсу та макет. А з Flutter вам потрібна лише одна команда розробників, тому процес розробки буде просто швидшим.

Через це малобюджетний Flutter стає все популярнішим порівняно з нативними рішеннями. Він дозволяє розробникам використовувати єдину кодову базу, що значно знижує вартість розробки. Знову ж таки, що стосується нативних технологій, розробникам доводиться писати код для кожної платформи, що неминуче потребує додаткової роботи та бюджету.

Підтримка коду також є важливим елементом розробки та підтримки проєкту загалом. У більшості випадків для підтримки нативних застосунків потрібна більша команда, тоді як застосунок, написаний на Flutter, може підтримувати один розробник.

Native Team

Flutter Team

1 QA

1 QA

2 IOS developers

2 Flutter developers

2 Android developers

2 Web developers

1 Flutter developer

1 Designer

1 Designer

1-2 Back-end developers

1-2 Back-end developers

For one month rate

Android + IOS

Android + IOS + Web

Profit

Native

160 * 50 * 4 = $ 32000

160 * 50 * 6 = $ 48000

$ 16000

Flutter

160 * 50 * 2 = $ 16000

160 * 50 * 3 = $ 24000

$ 8000

*візьмемо для прикладу ціну погодинної роботи — $ 50

З мого досвіду та досвіду експертів нашої команди можна стверджувати, що використання Flutter заощаджує до 40% на розробці та до 30% на дизайні програми. Однак проєкти бувають різними, до того ж від кількості платформ залежить, чи буде це Android та iOS, чи Flutter також буде використовуватися для Web чи Desktop. Іноді Flutter може заощадити до 15% бюджету, а іноді до 40%.

Випадки використання Flutter

Коли варто вибрати Flutter, а коли — нативну розробку?

Тепер Flutter використовується на проєктах будь-якого розміру, зокрема й для великих бізнес-застосунків, як-от eBay, Crédit Agricole та GooglePay. Зараз кількість програм (у відкритому списку), створених у Flutter, сягає 3,000.

Що стосується нативних технологій, розробники використовують їх для створення складних нішевих застосунків з розширеними функціями. Таким прикладом є розробка ігор, додатків AR/VR, застосунків, які використовують функціональність Bluetooth на 100%, і, звичайно, застосунків, розроблених для однієї платформи.

У таблиці нижче показано випадки використання Flutter і нативних технологій.

Flutter

Native

MVP apps

Розробка високопродуктивних програм з сильним OS Embedded зв’язком між додатком та девайсом

Якщо ви націлені на кілька платформ одночасно.

Швидкі оновлення програми на основі випуску кожної нової версії ОС

Створення спільного дизайну для всіх платформ

Потреба у складних функціях із високою надійністю

Швидке охоплення ширшої цільової аудиторії та скорочення часу виходу на ринок

Створення додатків лише для однієї платформи

Розширені плагіни ОС із простою логікою

Розробка AR/VR додатків

Розробка додатків за обмеженого бюджету

Створення Al-triggered програми з великими даними

Створення ігрових додатків

Висновок

Якщо підсумувати все, що сказано вище, можна зробити такі висновки:

  1. Flutter — чудове рішення для скорочення часу та бюджету розробки.
  2. Жодна з технологій не є універсальним рішенням для ваших конкретних проєктів і потреб бізнесу, кожен випадок індивідуальний.
  3. У Flutter ви можете створити MVP-застосунки за 2-3 місяці. Розробка за допомогою Flutter обійдеться вам у середньому на 30% дешевше, ніж створення двох нативних програм. А можливість підтримки Web і Desktop може ще більше збільшити цю цифру.
  4. Нативні технології завжди залишатимуть за собою частину ринку, оскільки вони краще підходять для складних нішевих програм з розширеними функціями. Прикладами, які погано поєднуються з Flutter, є ігри та програми AR/VR.

Отже, чи є Flutter гарним вибором для розробки програм? Команда, з якою я працюю, та я особисто вважаю, що Flutter — чудовий інструмент для швидкого розширення клієнтської бази, оцифрування бізнесу та розширення його в диджитал-середовищі.

Якщо ви чи ваш клієнт шукаєте рішення для швидкої розробки програми для iOS та Android без шкоди для якості та бюджету, сміливо обирайте Flutter, ви не помилитесь. Цей фреймворк допоможе вам створити потужні та красиві застосунки, які задовольнять потреби вашого бізнесу, клієнта та користувачів.

👍ПодобаєтьсяСподобалось9
До обраногоВ обраному3
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Де можна піти на курси по флатоер?

Самонавчання ваше все. Можу порадити дуже простий курс від App Brewery для початку www.youtube.com/...​svdtl3Pw48-R8lcK2oYkk40cm . Та багато цікавого свого часу я взяв у ResoCoder www.youtube.com/@ResoCoder/featured. Ці матеріали не нові, тож треба буде оновлювати бібліотеки та підлаштовуватися під них, проте вони дуже якісні.

Let’s срач begin. 2 солдата із стройбата заміняють екскаватор

Що там із a11y?

А ще я якось підозріло часто стрічаю у Flutter-поробках рядки, особливо локалізовані, що ся не переносять і вилазять за екран. «CSS IS AWESOME» тихо плаче осторонь.

А нічого що angular пилить гугл, і доволі таки успішно (це про нападки на Ionic), той самий капасітор для нейтів на який можна перейти на раз два з кордови...
Ну і якщо сказали про іонік то ще є material і Expo для реакту ...

flutter для web мертвонароджена фіча, бо вона не вміє у декілька речей які критичні для веба, а саме в seo та ssr, і що ще критичне це сама мова dart, коли є вже стільки усього на typescript/js ніхто не захоче вчити dart задля flutter

Dart існує доволі давно, Google його ще у перші роки існування Chrome ся намагаше пропхати як альтернативу JavaScript (подібного до того, як IE підтримує VBScript).

так але з цього нічого не вийшло, тепер Гугл думає що за для флатера люди будуть масово вчити дарт тому що він там щось вміє у веб )))

Ну не вбачаю проблеми, ніша для позабраузерних мов, що ся компілюють у WA/WebGL, достеменно є: так, воно страшне, кравленню не підлягає, a11y ніякої, на кавоварках із links не працює — але продуктів, побудованих таким чином, впевнено більшає. Врахуйте, що є цілі когорти десктопних і мобільних розробників, які вебу гидують і вчити не хочуть. Гадаєте, їм не можна таку цукерочку згодувати, і вони не хочуть вчити в принципі щось нове (а куди вони ся подінуть із підводного човна? де там вперті дельфісти і 1С-ники?), а не виключно веб із його CSS
IS
AWESOME і kuk
arek is not a function()?

я бачив статтю про ssr для flutter, здається не дуже критично (можна фіксити)
поки не розумію для чого ця альтернатива якщо є react, vue, angular — страшенно конкурують між собою...

Основним кейсом використання є потреба у мобільних додатках і тоді Flutter web стає доцільним.

Flutter web існує для створення веб-додатків, а не веб-сайтів. Основним кейсом використання є потреба у мобільних додатках і тоді Flutter web стає доцільним. Ця технологія не найкращий вибір якщо треба тільки web версія.

це така сама пастка як реакт і реакт нейтів, де напиляли Expo яке має це все об’єднати

завжди виграє Android Native та iOS Native, а цих інфо-циган вже надивилися та проектів що неможливо мігрувати і підтримувати.

якщо додати у вашу табличку Kotlin Compose Multiplatform, то буде ще на 2-3 програмісти дешевше, тому що код повністю пишеться у спільному модулі, а мережевий код можна робити спільним з бекендом — вся команда працює на одній мові, і може перерозподіляти таски як забажає — наприклад дизайн не готовий, фронтенд допомогає бекенду, флаттеру про таке і мріяти неможливо

Як тільки Compose Multiplatform вийде з Alpha для IOS то обов`язково додам.

Я думаю про кмм взагалі зараз розмоляти не пристойно, сире рішення з сумнівним майбутнім який має всіх поставити на лопатки і так по циклу вже 2-3 роки підряд, але передбачити хоч якесь майбутнє для самого нативного відра також досить важко, зараз планується нова ІДЕ-шка від гугла некстген з ген-аі інтеграціями і модними плюхами, флаттер та РН з коробки а про кмм навіть вже й не згадує ніхто окрім творців і секти фанатіків другого пришестя.

немає андроїд застосунка — немає проблеми)

Це 100%, немає коду = немає багів)

Так...
відкриваємо пейдж з переліком ішус
github.com/flutter/flutter/issues
і вперед.
А потім не можуть зрозуміти, чому на одній платформі праює, а на іншій — ні. І виходить як завжди «прекрасний» Франкенштейн, до того ж треба буде ще витратити час, щоб з’ясувати причину — і замовник спитає, а чому, друже, ти про це не розповідав, і чому тепер я маю за це платити.
Тому для чогось простого — то може і ок.

Issue є та будуть завжди, критичні швидко фіксяться командою розробки.

поки баг не пофіксений командою флаттера — проект бажить і попробуй пояснити замовнику, чому ти не можеш його пофіксити.

я так нарвався на веб-проект зав’язаний на одну стару графічну лібу.
вірніше, коли проект робили — ліба ще підтримувалась так-сяк,
а потім проект скинули на мене зі списком наявних проблем,
інвестігейшен показав, що проблеми в багах ліби.

ситуація з лібою: з тої версії, що використовується в проекті, вже був великий апдейт, несумісний по АПІ, частина багів також перекочувала в нову версію, далі розробка ліби скотилась майже до нуля.

от і виходить: спробувати апгрейд ліби і переписати половину проекту, при цьому результат непрогнозований.
переписати все з нуля, на іншій графічній лібі.

Баги ліби і те що її перестали підтримувати це ж не проблема флаттера, в мене теж були кейси коли доводилося робити форк і самому фіксити баги ліби але це речі не пов’язані з фреймворком.

Відкриваєм issues і бачимо що там в купі issues для flutter та пакетів

Відкрий issues будь-якого проєкту на github і дивуйся як воно ще працює

З Flutter, принаймні раніше, була ось яка штука — він добре підходив, якщо інтерфейс унифікований між Android та iOS. Що припустимо для ряду додатків типу додатків від супермаркетів, мобільних операторів та таке інше. Але щоб зробити на Flutter додаток, в якому на кожній з платформ інтерфейс буде мати вигляд, нативний для тієї платформи (для iOS аудиторії то могло бути дуже принциповим питанням, якщо мова не про «нишові» додатки) — то треба було дуже постаратися.

Якщо потрібен платформенно специфічний UI то треба буде трохи витратити часу, але я не стикався з такою вимогою. Зазвичай замовник хоче мати свій стиль та дизайн для впізнаваності, відповідно консистентний дизайн тут дає додаткові плюси.

Лідер галузі настільки сильно вірить у технології

во-первых, лидер в какой галузі?
во-вторых, сколько этот самый лидер прикопал уже технологий и проектов?

Розрахунок команд Native+Native vs Flutter трохи примітивний) Написати код зможе будь хто, не у цьому робота програміста. Основні затрати полягають у вигадуванні рішень, архітектурних та бізнесових. А код написати — багато навичок не потрібно.

Ну звісно, якщо брати за аксіому те, що команда настільки незлагоджена, що андроїд та iOS команди нічого разом не вигадують, то звісно розрахунок спрацює, але проблема тоді не у технологіях, а у команді.

Розрахунок приблизний для розуміння «середньої температури по кімнаті», 100% все залежить від конкретного проекту та його команди (не тільки розробників).

React Native — найкраще рішення для кросплатформенної розробки

А з чим ви порівнювали? І з чим мали справу, що так впевнено стверджуєте?

ога, на андроіді і іос вилазять різні баги в різних місцях і фіксити їх треба, щоб нічого не зламати в іншій ОС

Хіба що, для тих, хто ні во що інше, окрім JavaScript / TypeScript не вміє :)

Цікава стаття, дякую!

А що ви думаєте про зростаючу популярність KMP? Чи не витіснить KMP Flutter з часом?

Зробити кросплатформ розробників із андройдщиків виглядає швидше і дешевше для бізнесу, ніж тримати флатер розробників які вміють тільки у Flutter.

Людина яка знає Kotlin тепер може і Android писати, і кросплатформу, і бекенд (Spring).
Знаючи мову розібратись з новим фреймворком на багато швидше.
Ніж повністю змінювати стек, як у випадку з Flutter.

KMP виглядає цікаво, але для початку хай Compose
Multiplatform вийде з Alpha для IOS і тоді подивимося. На мою думку KMP розвивається недостатньо швидко, хоча має все для того щоб зайняти свою частину ринку.

Ця «KMP» навіть не гуглиться, щоб просто дізнатись що це таке. А Flutter доволі зріла технологія вже.

Kotlin Multiplatform просто скорочують по різному, раніше писали KMM )

В цих питаннях краще орієнтуватися на гугл, так як він є основним індикативним чинником. Котлін та відро не є тотожними поняттями так як відро не важливо наскільки воно диряве успішно працює на тій самій затертій яві, тут треба дивитися куди дує гугл і розуміти напрямок. Доречі китайці які типу максимальні борці з відром після санкцій на своїх велосипедних ОС, не цураються дарта і флаттера в розробці вже «прямо з коробки» рішень. Стосовно кмм за останній рік взагалі не зустрічав якихось оновлень, ось це чітко індикативно.

has already won the title of the best framework for cross-platform development
вже завоював звання найкращого фреймворку для кросплатформенної розробки

З якого джерела ця інформація?

Statista (www.statista.com/...​-developer-working-hours), розробники просто так рідко переходять на нові фреймворки)

Flutter is the most popular cross-platform mobile framework used by global developers, according to a 2022 developer survey. Based on the survey, 46 percent of software developers used Flutter.

Ви плутаєте визначення “найкращий” та “найпопулярніший”

Для мене фреймворк який стабільно зростає на протязі років і переманює на свій бік розробників і є «найкращий», бо я рідко бачу щоб розробник змінював краще на гірше.

Ви своїм текстом вводите читачів в оману в англійській версії статті й в українській версії статті

Про це перший коментар

Може й не самий кращий, але достатньо гарний, щоб в це повірити. В моєму особистому рейтингу абсолютний #1 на зараз (серед WinForms, Cocoa, WPF/Silverlight, Qt/Widgets та Qt/Qml).

Підписатись на коментарі