К содержанию

Wiki · Технологии разработки

Flutter

Flutter – это открытый фреймворк Google для разработки приложений под iOS, Android, веб, Windows, macOS и Linux из одной кодовой базы. Код пишут на языке Dart, а интерфейс Flutter рисует собственным движком.

Обычно разговор начинается так: «Сделаем приложение на Flutter, сразу под iPhone и Android». Звучит как экономия, и часто она действительно есть. Но у одного кода на две платформы есть цена, и её лучше понимать до старта, а не через год, когда понадобится функция, которой во Flutter пока нет.

Чей это фреймворк и какие приложения на нём делают

Flutter развивает Google вместе с сообществом, код открыт на GitHub под лицензией BSD 3-Clause. Первая стабильная версия вышла в декабре 2018 года. На октябрь 2026 года актуальна версия 3.47 (август 2026), новые версии выходят примерно раз в квартал.

В витрине на flutter.dev есть приложения Google Pay, BMW, Toyota, Nubank, eBay Motors. На практике Flutter берут для клиентских приложений (заказ, запись, бонусы, личный кабинет), внутренних приложений для сотрудников и первых версий продукта, которые нужно быстро выпустить в оба магазина.

Почему Flutter рисует интерфейс сам, а не берёт системный

Нативное приложение собирает экран из системных элементов: кнопок, списков и полей ввода iOS или Android. Flutter их не использует. Он рисует каждый пиксель сам, через движок Impeller, поэтому приложение выглядит одинаково на любом телефоне.

Экран собирают из виджетов: текст, кнопка, колонка, отступ. Есть два готовых набора элементов: Material в стиле Android и Cupertino в стиле iOS. Упрощённо экран выглядит так:

Column(children: [
  Text('Запись к врачу'),
  ElevatedButton(onPressed: book, child: Text('Записаться')),
])

В релизной сборке код на Dart компилируется в машинный код процессора. Во время разработки работает горячая перезагрузка (hot reload): правку видно на телефоне меньше чем за секунду, без перезапуска приложения. Камеру, платежи, Bluetooth подключают плагинами или своим кодом на Kotlin и Swift через платформенные каналы.

Схема: из одного кода на Dart Flutter собирает приложения для iOS, Android, Windows, macOS, Linux и веб-версию для браузера
Один код на Dart, шесть платформ

Что даёт один код на две платформы и чем за это платят

  • Один код и одна команда на iOS и Android: экраны, логика и тесты общие.
  • Фирменный дизайн переносится точно и одинаково выглядит на всех устройствах.
  • Flutter можно встроить в уже работающее нативное приложение и переводить его по частям.
  • Движок добавляет к размеру приложения несколько мегабайт.
  • Свежие функции iOS и Android доходят до Flutter с задержкой. Иногда их приходится писать на Kotlin и Swift.
  • Интерфейс не системный. Когда Apple или Google меняют дизайн системы, приложение само в новый стиль не переходит.

Отдельно про веб. Документация Flutter прямо пишет, что вывод Flutter для веба не совпадает с тем, что нужно поисковикам для индексации, а сайты с текстовым контентом, например блоги, ему не подходят. Подробнее о том, как поисковики видят такие сайты, в статье JavaScript SEO.

Flutter, React Native или нативная разработка

ПодходЯзыкиИнтерфейсКогда подходит
FlutterDartРисует свой, одинаковый вездеОдно приложение на две платформы с фирменным дизайном
React NativeJavaScript, TypeScriptСистемные элементыВ команде уже есть разработчики на React
НативноKotlin и SwiftСистемные элементыПлотная работа с камерой, AR, датчиками, нужны новинки iOS и Android в день выхода

Команда и ежегодные обновления под Google Play и App Store

Нужен разработчик, который знает Flutter и Dart, а для нестандартных функций ещё и специалист, который разберётся в нативном коде Android и iOS. Код Flutter нельзя перенести в нативный проект: смена технологии означает новую разработку интерфейса.

Закладывайте ежегодное обновление. С 31 августа 2026 года Google Play принимает новые приложения и обновления только с целевым Android 16 (API 36), а App Store с 28 апреля 2026 года принимает сборки только из Xcode 26. Значит, раз в год проект пересобирают, обновляют Flutter и плагины. Если плагин заброшен автором, его приходится менять. Поэтому перед стартом попросите список пакетов с pub.dev, на которых держится проект: у каждого там видно дату последнего обновления и поддерживаемые платформы.

Чек-лист перед разработкой приложения на Flutter: функции телефона, плагины, нативный код, веб-версия, обновления, аккаунты в магазинах приложений
Что обсудить с подрядчиком до старта

Как найти Flutter внутри APK и в репозитории

В Android-приложении на Flutter есть библиотека libflutter.so. Документация Flutter предлагает искать её так:

apkanalyzer files list app.apk | grep flutter.so

Если у вас есть доступ к репозиторию, всё ещё проще: в корне лежит файл pubspec.yaml, а код в папке lib с файлами .dart.

Как выбор Flutter оборачивается лишними расходами

  • Делать на Flutter сайт, который должен приводить клиентов из поиска.
  • Считать, что один код равен половине бюджета. Тестирование на двух платформах и публикация в двух магазинах остаются.
  • Не проверить до старта, есть ли рабочие плагины под главные функции приложения.
  • Оставить аккаунты разработчика в App Store и Google Play на подрядчике.

Приложения проектируем и разрабатываем по услуге «Разработка мобильного приложения», кабинеты для клиентов и сотрудников по услуге «Разработка личного кабинета». Если проект уже работает на Flutter, берём его на доработку и поддержку.

Flutter против React Native и Kotlin, SDK и сборка под iOS

Flutter или React Native: что выбрать, если команды на React нет?

Тогда решают по продукту, а не по команде. Flutter рисует интерфейс сам и даёт одинаковый фирменный дизайн на всех телефонах. React Native собирает экран из системных элементов, и его главный плюс в том, что разработчики на React и TypeScript переходят на него почти без переучивания. Без такой команды этот плюс пропадает.

Что входит во Flutter SDK и кому его ставить?

В SDK входят сам фреймворк, движок, наборы виджетов, инструменты для тестов, командная утилита flutter и Dart SDK. Ставит его разработчик на свой компьютер, пользователю приложения он не нужен.

На чём собирать Flutter-приложение под iOS, если в компании нет Mac?

Сборку под iPhone делают на Mac с Xcode, без него в App Store не попасть. Под Android собирать можно на Windows, Linux или macOS. Если своего Mac нет, сборку под iOS берёт на себя подрядчик или облачный сервис сборки. С 28 апреля 2026 года App Store принимает только сборки из Xcode 26, так что и Xcode должен быть свежим.

Flutter или Kotlin, если приложение нужно только под Android?

Для одной платформы обычно берут Kotlin: приложение собирается из системных элементов и получает новинки Android в день выхода. Flutter оправдан, если позже планируется версия для iPhone или нужен одинаковый фирменный дизайн на всех устройствах.

Как перевести работающее нативное приложение на Flutter по частям?

Через механизм Add-to-App: Flutter встраивают в существующий проект для Android и iOS, новые экраны пишут на нём, а старые остаются нативными, пока до них не дойдёт очередь. Так приложение не замораживают на время переписывания.

Что делать, если под нужную функцию нет плагина?

Писать её на Kotlin и Swift и связывать с кодом на Dart через платформенные каналы. Это работа для специалиста по нативной разработке, поэтому плагины под главные функции, например камеру или платежи, ищут на pub.dev ещё до оценки проекта.

Почему веб-версию на Flutter плохо видят поисковики?

Flutter и в браузере рисует интерфейс сам, а не отдаёт обычную HTML-разметку с текстом, которую ждёт поисковый робот. Поэтому на Flutter делают веб-приложения и личные кабинеты, а посадочные страницы и блог держат на обычном HTML, так советует и документация фреймворка.

Источники

  • Документация Flutter: FAQ, архитектура, веб-платформа, публикация Android-приложения
  • Блог Flutter: What's new in Flutter 3.47
  • Google Play: требования к целевому уровню API
  • Apple Developer: требования к SDK для публикации в App Store

См. также: JavaScript SEO, Мобильная версия сайта, Мобильное приложение, Kotlin, Swift.

Остались вопросы по теме «Flutter»?

Напишите нам в Telegram или MAX. Ответит специалист, который отвечает за эту тему, или руководитель проектов в рабочее время.

Сергей ЧерняковОтвечает по темеСергей ЧерняковWeb-разработчик

Посчитайте стоимость проекта за 2 минуты

Калькулятор соберёт смету по нашим тарифам: сайт, дизайн, интеграции и поддержка.