Рубріки: 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 вам не важна.

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

 

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

Что такое прокси-сервер: пояснение простыми словами, зачем нужны прокси

Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…

21.11.2024

Что такое PWA приложение? Зачем необходимо прогрессивное веб-приложение

Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…

19.11.2024

Как создать игру на телефоне: программирование с помощью конструктора

Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…

17.11.2024

Google Bard: эффективный аналог ChatGPT

В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…

14.11.2024

Скрипт и программирование: что это такое простыми словами

Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…

12.11.2024

Дедлайн в разработке: что это такое простыми словами

Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…

11.11.2024