Яндекс.Метрика
Услуги Портфолио Контакты БлогНовости +7 (800) 511‑32‑27 Обсудить проект
Мобильная разработка

Что такое Flutter и Dart: как устроен фреймворк простыми словами

16 августа 2026·7 мин чтения
Юрий Пухов
Автор материалаЮрий ПуховCEO, YuSMP Group
Профиль автора
Смартфон, планшет и ноутбук, соединённые потоками данных — кроссплатформенная разработка на Flutter

По данным опросов Statista, Flutter — самый популярный кроссплатформенный фреймворк в мире: в 2023–2024 годах его выбирали около 46% разработчиков, обошёл React Native, Xamarin и все остальные альтернативы. При этом многие предприниматели и менеджеры, которые рассматривают мобильное приложение для своего бизнеса, сталкиваются с простым вопросом: «flutter это что вообще такое — язык, фреймворк, платформа?». Официальный сайт flutter.dev сухо говорит, что это SDK от Google, а dart.dev объясняет, что Dart — это язык. Но как всё это связано между собой и почему разработчики выбирают именно этот стек — разберём ниже простыми словами.

Содержание

Что такое Flutter простыми словами

Flutter — это open-source UI SDK (Software Development Kit) от Google, который позволяет написать приложение один раз и запустить его на iOS, Android, веб-браузере, Windows, macOS, Linux и даже на встраиваемых устройствах. SDK означает «набор инструментов для разработки»: Flutter — это не язык и не операционная система, а комплект готовых библиотек, компонентов и инструментов, с помощью которых программисты создают интерфейсы.

Главная идея Flutter — «один код — все платформы». Вместо того чтобы поддерживать отдельную команду iOS-разработчиков на Swift и отдельную команду Android-разработчиков на Kotlin, бизнес пишет одну кодовую базу, которая превращается в нативно-компилированное приложение под каждую платформу. Это сокращает сроки разработки, затраты и количество расходящихся версий продукта.

Flutter — это язык или фреймворк?

Это один из самых частых вопросов, и путаница здесь понятна. Для ясности: Flutter — это фреймворк (SDK), а не язык. Язык программирования, на котором пишут приложения с помощью Flutter, называется Dart. Их связь такая же, как между Node.js (среда) и JavaScript (язык) или между Django (фреймворк) и Python (язык). Говоря «приложение на Flutter», имеют в виду, что приложение написано на Dart с использованием Flutter-библиотек.

Что такое Dart и зачем он нужен Flutter

Dart — это язык программирования, созданный в Google. По синтаксису он похож на Java, JavaScript и C#: если вы уже знаете любой из этих языков, Dart освоить несложно. Dart поддерживает статическую типизацию — это значит, что тип переменной задаётся заранее, и компилятор ловит многие ошибки ещё до запуска программы. Одновременно в Dart есть вывод типов, поэтому код остаётся достаточно компактным.

Почему Flutter выбрал именно Dart, а не JavaScript или Kotlin? Ответ прежде всего технический: Dart одинаково хорошо компилируется в машинный код (AOT) для быстрого продакшн-релиза и запускается через JIT-компилятор для молниеносного hot reload во время разработки. Это сочетание редкое и очень ценное для инструмента, который должен быть удобным в работе и быстрым в продакшне одновременно. Подробнее о выборе Dart в архитектуре Flutter — в нашей статье «Почему Flutter использует Dart, а не Kotlin или JavaScript».

Как устроен Flutter изнутри (архитектура из 3 слоёв)

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

Framework (Dart) — виджеты и бизнес-логика

Верхний слой — это код на Dart, с которым работает разработчик ежедневно. Здесь живут виджеты — строительные блоки любого Flutter-интерфейса. В Flutter буквально всё является виджетом: кнопка, текст, отступ, анимация, сам экран. Даже приложение целиком — это виджет. Такой подход называется widget tree («дерево виджетов»): интерфейс описывается как иерархическое дерево вложенных компонентов.

Flutter поставляет две готовые библиотеки виджетов: Material Design (стиль Google/Android) и Cupertino (стиль Apple/iOS). При желании разработчик создаёт собственные виджеты с нуля — именно поэтому Flutter-приложения выглядят одинаково на iOS и Android: интерфейс не зависит от нативных компонентов операционной системы.

Engine (C++) — рендеринг и текст

Средний слой — движок Flutter, написанный преимущественно на C++. Он отвечает за низкоуровневую работу: рендеринг графики, обработку текста, анимации, ввод с экрана и работу с сетью на уровне платформы. Именно движок берёт виджет-дерево от верхнего слоя и превращает его в пиксели на экране с частотой 60 или 120 кадров в секунду. С версии Flutter 3 основным движком рендеринга стал Impeller, заменивший Skia.

Embedder — платформенная обвязка

Нижний слой — embedder. Это тонкая платформозависимая оболочка, которая «встраивает» Flutter в конкретную ОС: запускает приложение, передаёт ему события касаний, ввода с клавиатуры, жизненного цикла приложения (фоновый режим, выход и т.д.). Для iOS embedder написан на Swift/Objective-C, для Android — на Java/Kotlin, для Windows — на C++. Именно embedder позволяет Flutter-приложению жить внутри экосистемы каждой платформы, сохраняя доступ к платформенным API через механизм Platform Channels.

Как Flutter рисует интерфейс: движок Impeller

Одно из ключевых архитектурных решений Flutter — Flutter рисует интерфейс самостоятельно, не используя нативные UI-компоненты операционной системы. React Native, например, транслирует компоненты в нативные кнопки и тексты iOS/Android. Flutter вместо этого получает «холст» от платформы и рисует на нём каждый пиксель сам через свой движок.

Начиная с Flutter 3, движок рендеринга по умолчанию — Impeller. Это замена старому Skia-движку. Impeller использует Metal на iOS и Vulkan на Android — низкоуровневые графические API этих платформ. Главное преимущество Impeller перед Skia — предварительная компиляция шейдеров (AOT на этапе сборки приложения). В Skia шейдеры компилировались в первый момент их использования, что вызывало кратковременные подтормаживания — «янок» первого кадра. Impeller устраняет эту проблему: шейдеры готовы заранее, и первый рендер так же плавен, как сотый.

Практический результат для бизнеса: Flutter-приложения обеспечивают стабильные 60 fps (и 120 fps на поддерживающих экранах) без рывков при первом запуске анимаций — то, чего сложнее добиться на гибридных фреймворках, которые зависят от нативных компонентов.

Как Dart-код превращается в приложение: AOT и JIT

Dart поддерживает два режима компиляции, и это одна из ключевых причин, почему он отлично вписывается в Flutter.

JIT в разработке — hot reload

В процессе разработки Dart использует Just-In-Time компиляцию (JIT). Это значит, что код компилируется прямо во время выполнения, и это открывает возможность для hot reload — мгновенного обновления работающего приложения. Разработчик правит виджет, нажимает сохранение, и через долю секунды видит результат на экране без перезапуска приложения и без потери состояния. Подробнее об этом — в следующем разделе.

AOT в релизе — нативная скорость

При сборке продакшн-версии Dart переключается в режим Ahead-Of-Time компиляции (AOT): весь Dart-код заранее компилируется в нативный ARM-машинный код. Это означает, что в релизе Flutter-приложение работает с производительностью, сопоставимой с нативными Swift или Kotlin-приложениями — никакой виртуальной машины, никакого интерпретатора в рантайме. На iOS используется исключительно AOT: Apple не позволяет выполнять JIT-скомпилированный код в продакшн-приложениях из App Store, и Flutter полностью соответствует этому требованию.

Hot reload — почему разработчики выбирают Flutter

Hot reload — это, пожалуй, самая любимая функция Flutter среди тех, кто на нём работает. В классической нативной разработке цикл «написал код → скомпилировал → запустил → увидел результат» занимает от 30 секунд до нескольких минут. В крупных проектах пересборка может занимать и дольше.

В Flutter благодаря JIT-компиляции в режиме разработки цикл сокращается до долей секунды. Разработчик меняет цвет кнопки, выравнивание блока или логику отображения — и видит результат мгновенно, не выходя из приложения и не теряя его текущее состояние (например, остаётся на том же экране с теми же данными). Это резко сокращает время итерации при разработке UI и особенно ценно при работе со сложными анимациями или при детальной настройке дизайна.

Для бизнеса это означает: меньше часов, потраченных на цикл разработки, быстрее итерации с дизайнером, быстрее обратная связь при приёмке. На проектах с насыщенным UI hot reload экономит десятки часов разработки по сравнению с нативным подходом.

Где работает Flutter: платформы из одного кода

Один из сильнейших аргументов в пользу Flutter — исключительно широкий охват платформ из единой кодовой базы. Официально Flutter поддерживает:

  • Mobile: iOS и Android — основной и самый зрелый сценарий использования;
  • Web: компилируется в HTML/CSS/JS, работает в браузерах;
  • Desktop: Windows, macOS, Linux — нативные приложения;
  • Embedded: встраиваемые системы (например, Toyota использует Flutter в бортовых системах автомобилей).

На практике бизнес чаще всего запускает сначала мобильные платформы (iOS + Android из одного кода), а затем при необходимости расширяет на web или desktop — с минимальными доработками. Подробнее о конкретных сценариях применения и сравнении с альтернативами — в статье «Kotlin Multiplatform vs Flutter: что лучше выбрать для проекта».

Плюсы и минусы Flutter — честно

Перед тем как принимать решение о стеке, важно видеть реальную картину без маркетинговых преувеличений.

Сильные стороны

  • Скорость разработки. Один код для iOS и Android, hot reload, богатая стандартная библиотека виджетов — вместе они ускоряют разработку по сравнению с двумя нативными командами.
  • Единый дизайн на всех платформах. Flutter рисует UI сам, поэтому приложение выглядит одинаково на iOS, Android, Windows и в браузере. Это важно для брендов с жёсткими гайдлайнами.
  • Производительность близка к нативной. AOT-компиляция в релизе и Impeller-движок обеспечивают 60–120 fps без рывков.
  • Большая экосистема пакетов. Репозиторий pub.dev содержит тысячи готовых пакетов — от интеграций с Firebase до кастомных графиков и локальных баз данных.
  • Сильная поддержка Google. Flutter — проект с активным развитием: Google использует его в собственных продуктах (Google Pay, Stadia и др.).

Ограничения

  • Размер бандла. Flutter-приложения «весят» больше нативных, потому что включают движок рендеринга. Минимальный размер release-сборки на Android — около 7–10 МБ против 1–3 МБ у нативного.
  • Нативные API через Platform Channels. Всё, что не поддерживается Flutter-пакетом напрямую (специфичное железо, отдельные iOS/Android API), требует написания «мостика» — платформенного канала на Swift/Kotlin. Это дополнительная сложность.
  • Экосистема моложе нативной. У iOS и Android более зрелые нативные экосистемы, больше специализированных библиотек. Для сложных AR/VR, сложной работы с Bluetooth или биометрией нативное решение может оказаться проще.
  • Требует Dart. Найти Flutter-разработчиков сложнее, чем JavaScript-разработчиков, хотя за последние 3 года рынок Dart/Flutter-специалистов значительно вырос.

Кому и когда подходит Flutter

Flutter оптимален в следующих сценариях:

  • MVP и стартапы, которым нужно быстро проверить гипотезу на двух платформах сразу без удвоения команды и бюджета.
  • Продукты с уникальным дизайном, где важен пиксель-точный единый UI на iOS и Android: Flutter рисует всё сам, а не полагается на нативные компоненты, которые выглядят по-разному на разных ОС.
  • Кроссплатформенные продукты, которые должны выйти на mobile + web + desktop из одной кодовой базы.
  • Команды, которые ценят скорость итерации: hot reload и единая кодовая база сокращают цикл разработки и сопровождения.

Нативная разработка (Swift для iOS, Kotlin для Android) предпочтительнее, если приложение требует глубокой интеграции с платформенными API (сложная AR/VR-графика, специфичный Bluetooth, платформенные расширения), или если у компании уже есть зрелые нативные команды, и переключение обойдётся дороже синергии кроссплатформы.

Если вы планируете разработку приложений на Flutter или выбираете между кроссплатформенными и нативными подходами, правильное решение всегда зависит от конкретного продукта, команды и бюджета. Подробнее о стоимости и вариантах — в нашем материале «Разработка на Flutter: цена и что на неё влияет». А ознакомиться с полным спектром услуг по разработке мобильных приложений можно на соответствующей странице.

Частые вопросы (FAQ)

Flutter — это язык программирования?
Нет. Flutter — это UI-фреймворк (SDK) от Google. Язык, на котором пишут Flutter-приложения, — Dart.
Чем отличаются Flutter и Dart?
Dart — язык программирования; Flutter — набор инструментов и библиотек (SDK) для создания интерфейсов, работающий на Dart. Flutter без Dart не работает, но Dart можно использовать и вне Flutter.
Нужно ли знать Java, Kotlin или Swift, чтобы писать на Flutter?
Нет, базово достаточно Dart. Нативные знания нужны лишь для сложных платформенных интеграций через Platform Channels — например, если приложению нужен доступ к специфичному SDK в нативном коде iOS или Android.
Подходит ли Flutter для больших приложений?
Да — на Flutter сделаны крупные продукты (Google Pay, Alibaba's Xianyu, BMW App). Ограничения касаются размера бандла и отдельных нативных API, которые требуют платформенных каналов.
Flutter бесплатный?
Да, Flutter и Dart — open-source и полностью бесплатны. Платите только за разработку (специалистов) и инфраструктуру (сервера, стор-аккаунты).
Flutter или React Native — что выбрать?
Зависит от команды и задач. Flutter рисует UI сам и не зависит от нативных компонентов — лучше для единого дизайна на всех платформах. React Native ближе к нативным элементам и подходит командам с глубоким JavaScript-опытом. Подробное сравнение — в отдельных материалах блога.

Нужно приложение на Flutter?

Спроектируем и разработаем кроссплатформенное приложение на Flutter — один код для iOS и Android, единый дизайн и быстрый релиз.

Заказать разработку на Flutter