Открыть сервис

Флаттер

Флаттер (англ. Flutter) — это открытая кроссплатформенная программная платформа (фреймворк) для разработки графических пользовательских интерфейсов, созданная компанией Google. Позволяет создавать приложения для операционных систем Android, iOS, Linux, Windows, macOS, а также для веб-браузеров из единой кодовой базы на языке программирования Dart. Отличительной особенностью Flutter является использование собственного движка рендеринга (Skia, позже Impeller), который отрисовывает все элементы интерфейса, а не полагается на нативные компоненты операционной системы.

История

Разработка Flutter началась в 2015 году под кодовым названием «Sky» в рамках проекта Google по созданию движка для быстрого рендеринга интерфейсов. Первая публичная демонстрация состоялась на конференции Dart Developer Summit в 2015 году, где был показан прототип приложения, работающий на Android с частотой обновления 120 кадров в секунду.

В 2017 году Google выпустила первую альфа-версию Flutter, а в декабре 2018 года состоялся официальный релиз Flutter 1.0, который был анонсирован на конференции Flutter Live. На тот момент платформа поддерживала только разработку под iOS и Android.

В 2019 году вышла версия Flutter 1.9, добавившая поддержку веб-платформы. В 2020 году, с выходом Flutter 2.0, поддержка веба стала стабильной, а также была добавлена экспериментальная поддержка настольных операционных систем (Windows, macOS, Linux). В 2022 году поддержка настольных платформ была объявлена стабильной.

Ключевым этапом развития стало внедрение нового движка рендеринга Impeller, который начал заменять Skia в версии Flutter 3.16 (2023 год). Impeller был разработан для устранения проблем с производительностью, характерных для Skia, особенно на платформе iOS.

Архитектура и устройство

Язык программирования Dart

Flutter использует язык программирования Dart, также разработанный Google. Dart является объектно-ориентированным языком с C-подобным синтаксисом. Он поддерживает как компиляцию в машинный код (AOT — Ahead-of-Time) для производительности в релизных сборках, так и динамическую компиляцию (JIT — Just-in-Time) для быстрой горячей перезагрузки (Hot Reload) во время разработки.

Движок рендеринга

Основным компонентом Flutter является движок рендеринга. Изначально использовался Skia — кроссплатформенная графическая библиотека, также используемая в браузере Google Chrome. Начиная с версии 3.16, Flutter переходит на собственный движок Impeller, который использует современные графические API (Metal на iOS, Vulkan на Android, DirectX 12 на Windows) для более предсказуемой и высокой производительности. Движок отвечает за отрисовку каждого пикселя на экране, что обеспечивает единообразный внешний вид приложения на всех платформах.

Архитектура виджетов

Всё в Flutter является виджетом (Widget). Виджет — это неизменяемое описание части пользовательского интерфейса. Интерфейс строится путем композиции (вложения) виджетов друг в друга, образуя дерево виджетов. Существует два основных типа виджетов:

  • StatelessWidget — виджет, который не имеет внутреннего состояния и не изменяется после создания.
  • StatefulWidget — виджет, который может изменять своё состояние в ответ на действия пользователя или другие события. При изменении состояния виджет перестраивается.

Горячая перезагрузка (Hot Reload)

Одной из ключевых особенностей Flutter является функция Hot Reload. Она позволяет разработчику вносить изменения в код и мгновенно видеть результат на работающем эмуляторе или устройстве, не перекомпилируя всё приложение и не теряя текущее состояние. Это значительно ускоряет процесс разработки и отладки интерфейсов.

Классификация и виды

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

  • Flutter Mobile — основное и наиболее зрелое направление, нацеленное на создание приложений для Android и iOS.
  • Flutter Web — позволяет компилировать код Dart в JavaScript или WebAssembly для работы в браузере. Поддерживает как Progressive Web Apps (PWA), так и одностраничные приложения (SPA).
  • Flutter Desktop — обеспечивает сборку нативных приложений для Windows (с использованием Win32 или UWP), macOS (с использованием Cocoa) и Linux (с использованием GTK+).
  • Flutter Embedded — экспериментальное направление для запуска Flutter на встраиваемых устройствах и системах с ограниченными ресурсами.

Применение

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

  • Google Ads
  • Alibaba (приложение Xianyu)
  • eBay Motors
  • BMW (приложение для конфигурации автомобилей)
  • Nubank (крупнейший финтех-банк Латинской Америки)
  • Приложение «СберБанк Онлайн» (в части экранов для Android и iOS)

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

Преимущества и недостатки

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

  • Единая кодовая база — один код для всех платформ, что снижает время и стоимость разработки.
  • Высокая производительность — компиляция в нативный код и использование собственного движка рендеринга обеспечивают плавную работу приложений, близкую к нативным.
  • Быстрая разработка — функция Hot Reload позволяет мгновенно видеть изменения.
  • Единообразный интерфейс — приложения выглядят одинаково на всех платформах, что упрощает дизайн и тестирование.
  • Богатая библиотека виджетовMaterial Design (от Google) и Cupertino (от Apple) виджеты из коробки.
  • Активное сообщество и поддержка Google — регулярные обновления, большое количество пакетов и библиотек.

Недостатки

  • Размер приложения — приложения на Flutter имеют больший размер по сравнению с нативными из-за включения движка рендеринга и библиотек Dart.
  • Зависимость от Google — хотя Flutter является открытым проектом, его развитие и направление во многом определяются корпорацией Google.
  • Ограниченная поддержка платформо-специфичных функций — для доступа к некоторым нативным API (например, работа с Bluetooth, NFC, камерой на низком уровне) требуется написание платформенных каналов (Platform Channels) на Java/Kotlin или Swift/Objective-C.
  • Относительная молодость экосистемы — по сравнению с React Native или нативными SDK, некоторые библиотеки и инструменты могут быть менее зрелыми.
  • Сложность интеграции с нативными модулями — при необходимости глубокой интеграции с существующим нативным кодом могут возникнуть сложности.

Интересные факты

  • Flutter использует язык Dart, который был создан в Google в 2011 году и изначально предназначался для замены JavaScript в веб-браузерах.
  • Движок Skia, используемый в Flutter, также лежит в основе браузера Google Chrome и операционной системы Android.
  • Название «Flutter» (с англ. — «трепетание», «дрожание») было выбрано из-за высокой частоты обновления кадров, которую демонстрировал прототип.
  • В 2021 году Google объявила, что Flutter используется более чем в 500 000 приложений в магазинах Google Play и App Store.

Источники

  • Официальная документация Flutter (flutter.dev)
  • Dart SDK documentation (dart.dev)
  • Google I/O presentations (2017–2024)
  • Статья «Flutter: A Cross-Platform Framework» в журнале «IEEE Software» (2021)
  • Аналитические отчеты компании Statista по использованию кроссплатформенных фреймворков (2023)

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →