Рубріки: Mobile app

Захватит ли Flutter все платформы разработки?

Роман Гармидер

Что такое Flutter и какие проблемы призван решить

Flutter — это кроссплатформенное решение, позволяющее создавать приложения для веба, Android, iOS, Linux, Mac, Windows и Google Fuchsia, используя единую кодовую базу и один язык программирования — Dart.

Flutter на множестве платформ в представлении художника

По сути, это решение — ответ на сравнительную сложность современной веб-разработки. В ней необходимо знать по крайней мере три языка: HTML, CSS, JavaScript. Для создания динамичных страниц добавляется изучение фреймворка React, Angular или Vue. Для сборки проекта нужен Webpack, для загрузки и установки модулей — менеджер пакетов NPM (или Yarn). Для того, чтобы добавить строгую типизацию в ваш JavaScript-код, нужно добавить TypeScript. На изучение всех этих технологий уходит время.

В мобильной же разработке проблема — это существование нескольких платформ на разных языках программирования. Чтобы создать нативное приложение для смартфона, приходится собирать несколько команд разработчиков для каждой операционной системы.

Преимущества Flutter

Flutter предлагает совсем другой подход к веб-разработке. Он использует HTML canvas для отрисовки страниц. Код на Dart компилируется в JavaScript с помощью библиотеки dart2js. 

Flutter фактически контролирует каждый пиксель, отображаемый на экране, и не использует HTML, JavaScript или CSS для стилизации или логики. Это означает полную кроссбраузерность — во всех браузерах ваше приложение будет выглядеть одинаково.

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

Использование единого языка для стилизации, динамики и бизнес-логики в веб-разработке уменьшает количество знаний необходимое для создания аппликаций. Dart это статически типизированный язык, null safety (безопасная работа с пустыми ссылками) уже доступна в новой версии языка, все это дает ему преимущества перед программированием на JavaScript.

Код на Dart компилируется в минифицированный и оптимизированный JavaScript. Не нужно использовать Webpack с его сложностями с конфигурациями.

Flutter подходит для разработки PWA, SPA и приложений, использующих сложную 2D- и 3D-графику.

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

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

Минусы:

Поисковые системы пока что не интерпретируют сайты на Flutter, они понятны только людям. Это негативно сказывается на SEO. Наверное, это главная причина, по которой Flutter используют в основном в мобильной разработке, так как там индексация поисковыми роботами не имеет значения — люди скачивают приложения из магазина, а не находят через поисковики, как сайты.

Кроме того, рисование на canvas снижает производительность сайтов, особенно если используется множество анимаций. В направлении оптимизации еще есть куда улучшаться. В последнем обновлении разработчики сказали что значительно улучшили производительность анимаций и в доказательство этому привели такой вот сайт созданный на Flutter.

А разработчик Георг ван дер Ховен, например, рассказал, что столкнулся с проблемой, которую он назвал “ад зависимостей”, перенося свое приложение на Flutter. Множество базовых функций для Flutter реализовано через сторонние библиотеки, и каждая такая зависимость добавляет технический долг. Речь идет о таких функциях, как геолокация, телефонный вызов или предотвращение спящего режима, пока приложение открыто, переход по URL-адресам, открытие карты и многих других.

В то время как iOS и Android предоставляют большую часть подобных функций в своих собственных SDK “из коробки”, кроссплатформенные решения должны предоставлять мост, пакет или подключаемый модуль для каждого из них. А в случае Flutter они должны быть реализованы на трех языках каждый: Dart, Swift/Objective-C и Java/Kotlin.

Как точно выразился сам ван дер Ховен, “если вы одалживаете чей-то код или функциональность, однажды вам, возможно, придется за это заплатить”. Каждое кроссплатформенное решение будет добавлять несколько уровней сложности к вашему приложению и вводить дополнительные точки отказа на каждом уровне. Любой пакет Flutter может дать сбой в коде Dart, коде Swift/Objective-C или коде Java/Kotlin. Любое обновление Flutter, Dart, iOS или Android может сломать части этого пакета, а вместе с ним и ваше приложение на одной или всех платформах. И вы сможете исправить ошибки, только если вы хорошо знаете все эти технологии.

Можно отметить и огромное количество незакрытых багов в проекте на GitHub (на сегодня 8 705 открытых issues). Команда не успевает их закрывать. Это не добавляет надежности проекту.

***

Вывод

Flutter пока не в состоянии покорить все платформы разработки. Но он отличное решение, если нужно быстро и дешево проверить какую-то идею, создать рабочий прототип или кроссплатформенное мобильное приложение, с небольшим количеством зависимостей. Для веба это сработает только в том случае, если SEO вам не важна.

Использованные материалы:

 

Останні статті

Обучение Power BI – какие онлайн курсы аналитики выбрать

Сегодня мы поговорим о том, как выбрать лучшие курсы Power BI в Украине, особенно для…

13.01.2024

Work.ua назвал самые конкурентные вакансии в IТ за 2023 год

В 2023 году во всех крупнейших регионах конкуренция за вакансию выросла на 5–12%. Не исключением…

08.12.2023

Украинская IT-рекрутерка создала бесплатный трекер поиска работы

Unicorn Hunter/Talent Manager Лина Калиш создала бесплатный трекер поиска работы в Notion, систематизирующий все этапы…

07.12.2023

Mate academy отправит работников в 10-дневный оплачиваемый отпуск

Edtech-стартап Mate academy принял решение отправить своих работников в десятидневный отпуск – с 25 декабря…

07.12.2023

Переписки, фото, история браузера: киевский программист зарабатывал на шпионаже

Служба безопасности Украины задержала в Киеве 46-летнего программиста, который за деньги устанавливал шпионские программы и…

07.12.2023

Как вырасти до сеньйора? Девелопер создал популярную подборку на Github

IT-специалист Джордан Катлер создал и выложил на Github подборку разнообразных ресурсов, которые помогут достичь уровня…

07.12.2023