Флаттер
Флаттер (англ. 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 →