Если вы хотите создать мобильное приложение, то у вас есть два варианта: нативная разработка, когда код пишется отдельно для платформ iOS и Android на разных языках, и кросс-платформенная, когда код пишется один раз и запускается на всех платформах. Причём если нативная разработка имеет
Сегодня речь пойдет как раз об одном из них — Flutter. Это молодой, динамично развивающийся фреймворк, его официальный релиз состоялся в декабре 2018 года. Многие задаются вопросом — стоит ли разрабатывать на нем приложения? Лучше он или хуже существующих решений? Стоит ли связываться с кросс-платформенными технологиями, или следует отдать предпочтение нативной разработке? В этой статье мы постараемся ответить на эти вопросы по порядку.
Оглавление
Нужна ли мне кросс-платформенная разработка
Почему вообще стоит выбирать кросс-платформенные решения? Начнём с того, что они позволяют сэкономить бюджет и сроки проекта за счет сокращения рабочих часов, поскольку работа над двумя платформами ведётся одновременно и с использованием одной технологии. Единожды написанный и отлаженный код потенциально содержит гораздо меньше ошибок и расхождений в своей работе, чем если бы приложение разрабатывалось отдельно под каждую платформу разными командами. Поддержка продукта (добавление функциональности в приложение, исправление ошибок на обе платформы сразу, выпуск обновленной версии сразу в два магазина) будет обходиться дешевле по тем же самым причинам.
Также рекомендуем выбирать кросс-платформенное приложение в следующих ситуациях:
- Когда нужно, чтобы приложение выглядело одинаково на разных платформах. Навигация между экранами, поле поиска, системный календарь на iOS и Android выглядят
по-разному , но кросс-платформенные решения позволяют вам взять лучшее от обеих ОС и реализовать единый вариант дизайна. - Когда разрабатываемое приложение для своей работы не требует задействования всех вычислительных ресурсов устройства. В целом, кросс-платформенные технологии позволяют реализовывать практически любые виды приложений, однако есть исключения. Например, игры или приложения с дополненной реальностью, которые сильно загружают процессор и оперативную память (иначе говоря — «требовательны к производительности»).
- Когда приложение ориентировано на «card material design», который сегодня довольно популярен. То, что на Android является тривиальной задачей, для
iOS-разработчиков становится настоящей головной болью. Они тратят значительно больше времени на разработку интерфейса. С кросс-платформенными технологиями (в частности, с Flutter) разработчики «из коробки» (то есть им не нужно дополнительно устанавливать библиотеки ичто-то настраивать) имеют доступ ко всем нативнымUI-компонентам обеих платформ, благодаря чему работа ускоряется в разы.
Чем Flutter лучше
Однако кросс-платформенных решений в наше время довольно много. Почему же стоит обратить внимание именно на Flutter?
В статье на сайте «Типичного программиста» можно увидеть обзор наиболее популярных на сегодняшний день инструментов для написания кросс-платформенных приложений. Обратите внимание, что если вы хотите, чтобы скорость работы приложения была максимально близка к нативной, то у вас всего два варианта — React Native и Flutter. Эти технологии сейчас являются наиболее продвинутыми во многих отношениях. Почему же стоит выбрать Flutter, несмотря на то, что есть React Native, который несколько старше, уже зарекомендовал себя и имеет довольно крупное сообщество разработчиков?
Flutter ближе всего по производительности к нативным приложениям. Как правило, другие решения, основывающиеся на

Элементы интерфейса, которые рисует Flutter, не зависят от версии операционной системы (ОС), на которой запущено приложение. В отличие от того же React Native, который всегда обращается именно к нативным компонентам, используемым ОС. Поэтому на разных версиях ОС внешний вид приложения может немного отличаться. Для Flutter такой проблемы не стоит — приложение будет корректно отображаться и функционировать как на старых устройствах, так и на новых. Кстати, о новых устройствах. Не так давно разработчики столкнулись с тем, что не все приложения адекватно поддерживали темную тему в iOS-13, когда она только появилась. Вследствие того, что Flutter не использует компоненты системного интерфейса, его эта проблема не затронула.
Flutter гораздо меньше зависит от сторонних библиотек, необходимых для написания интерфейса приложения. Скажем, React Native обращается через API к нативным компонентам ОС и полагается на специальные плагины. Такие компоненты могут не вовремя обновиться и «сломать» внешний вид приложения. Тогда как во Flutter уже есть встроенные библиотеки для обеих платформ с довольно богатым выбором
Те, кто интересуется более подробным анализом, с точки зрения мобильных разработчиков, могут ознакомиться со статьей из блога компании The Droids On Roids. Статья интересна тем, что авторы имеют опыт как в нативной разработке, так и в кросс-платформенной, поэтому оценивают фреймворки с разных сторон.
Недостатки Flutter
Как бы Flutter ни был хорош, все же он не лишен недостатков. Уже говорилось, что это довольно молодая технология, и если ваше приложение потребует использования некоторых специфических нативных библиотек, то их
Быть может, будущие пользователи вашего приложения слишком привыкли к стандартному UI/UX? Тогда им будет сложно пользоваться единым интерфейсом двух платформ. Яркий пример — кнопка «Назад» в навигации между экранами. Если в Android для этого предусмотрена аппаратная кнопка Back, то в iOS используется либо кнопка в левой части навигационной панели, либо движение пальцем от левой части экрана. Без этой кнопки пользователи iOS не смогут вернуться на предыдущий экран, а с кнопкой будет непривычно пользователям Android. Кросс-платформа — это всегда компромисс в дизайне.
Перспективы развития
С момента своего официального релиза Flutter приобрел немало сторонников, и сообщество его разработчиков растет очень и очень быстро. О его популярности говорит и следующая статистика вопросов на StackOverflow:

Судя по графику (на 31.01.2020), Flutter за год с момента своего официального релиза добился такого же уровня популярности, которого достиг React Native за 3 года. Более того, интерес к Flutter только продолжает расти, что значит, что технология действительно востребована и успешно приживается среди разработчиков.
А вот статистика запросов в Google по всему миру за последние 5 лет (данные на 03.02.2020):

Из статистики специально были убраны фреймворки Ionic и Electron, так как эти названия совпадают с терминами из физики, и разграничить запросы не получится. Как видно, популярность Flutter в запросах в поисковике Google также стабильно растет с каждым месяцем, и он медленно, но верно, обгоняет React Native, своего главного соперника. Что также говорит о том, что перспективы у Flutter есть, и довольно неплохие.
Кросс-платформенной разработке — быть
Flutter уже сейчас есть что предложить сообществу разработчиков. Возможно, его еще рано называть абсолютным чемпионом среди кросс-платформенных решений, но его будущее видится вполне перспективным. В Google уже говорили, что они намерены активно развивать свой продукт, поскольку сами его используют в своих проектах. Так что ждем окончательного устранения недостатков, связанных с кросс-платформенностью, и того, что приложения на Flutter станут востребованнее.
А вот приложения, которые реализовала наша команда, с помощью фреймворка Flutter:
«Тайный Санта» — кросс-платформенное приложение для анонимного обмена подарками в канун Нового Года. Версия для IOS, Android.
«Кто я сегодня?» — кросс-платформенное приложение для самовыражения. Версия для IOS, Android.
Скачивайте и делитесь впечатлениями.