Привет, Хабр! Меня зовут Юра Петров, я руководитель отдела разработки в компании Friflex и автор канала «Мобильный разработчик». Возможно, мы встречались этой осенью на CrossConf, где я выступал с докладом и мы с ребятами презентовали нашу книгу о Flutter. В этой статье хочу продолжить рассказывать о фреймворке: какие платформы он поддерживает, в чем его преимущества (и как сделать прошивку своего чайника).

Пишем код один раз

У Flutter очень классный слоган: пишем код один раз и запускаем на iOS, Android, web, Linux, MacOS  — при этом ничего не меняя в самом проекте.

У Flutter есть особенности: 

  • современный, высокопроизводительный, компилируемый язык Dart;

  • свой рендер-движок Impeller;

  • высокая производительность (если вам кто скажет, что Flutter тормозит, не верьте, это полная чушь);

  • очень большое сообщество. 

Давайте вернемся к слогану: пишем код один раз. Так вот, это 100% про Flutter.

Платформы, которые поддерживает Flutter

Посмотрим на список официально поддерживаемых платформ.

Здесь есть Linux, Windows, MacOS, Embedded, web и Android. А что если вам скажу, что это далеко не весь список и есть еще новые игроки?

Например, Аврора, Huawei и Tizen (система для телевизоров Samsung, которая сейчас очень популярна). Если копнуть дальше и провалиться в эту кроличью нору — есть еще WebOS, Raspberry Pi, порты под устройства Sony (Linux-платформы) и Yocto Project.

Как вы думаете, есть ли в данный момент какой-нибудь фреймворк, который закроет хотя бы половину этих платформ? Представьте, Flutter это может. То есть вам не нужно менять основной код: вы можете взять ваше Flutter-приложение и раскатать его на WebOS, Raspberry Pi, Huawei, Tizen… На самом деле, это очень круто.

Ознакомиться можно по ссылкам:

Платформа

Статус/поддержка

Ссылки

Aurora OS (Аврора)

Активный форк от ОМП

gitlab

Tizen (Samsung)

Активный форк от Samsung

github

HarmonyOS

Активный форк от Huawei

gitee

webOS (LG Smart TV)

Закрытый SDK

webos

flutter-pi (Raspberry Pi)

Активный форк от сообщества

github

Flutter eLinux (Sony)

Активный форк от Sony

github

Yocto (meta-flutter)

Активный форк от сообщества

github

Немного об известных платформах

Аврора

Последняя версия порта: 3.29.2.

Обратите внимание:  версия  очень близка к оригинальному Flutter. И это на самом деле очень хорошо. Все важные плагины, такие как Camera, WebView — они все уже вшиты во Flutter SDK, который вы скачиваете. То есть вообще не надо ни о чем париться, все это работает уже из коробки. Очень много плагинов от сообщества, но есть небольшой нюанс: пока нельзя разрабатывать на Mac с M-процессорами. Но сам SDK сейчас уже работает в бета-версии, так что я думаю, это вопрос времени. У нас есть примеры приложений на Авроре, которые опубликованы в RuStore — для компаний ЭНЕРГОГАРАНТ, «Бристоль», «Дикси» и других.

Huawei 

Последняя версия порта: 3.22.2.

Интересно, что плагины у них опубликованы на PubDev: вы можете их скачивать и использовать. Посмотреть можно тут

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

Yocto Project

Так, вернемся к нашему чайнику на Flutter. Вот тут я предлагаю поговорить про Yocto Project, ведь на нем этот самый чайник и можно сделать. 

Yocto Project — это набор инструментов для сборки собственной Linux-системы, а именно прошивки для практически любого устройства. Это такой конструктор Lego для Linux-а. 

Допустим, вы создаете какое-то устройство (чайник, холодильник — неважно) и хотите, чтобы у вас на нем запустился Flutter. 

На самом деле, это не сложно: 

  • вы берете железо, ARM, Wi-Fi, GPU;

  • собираете Flutter Engine под устройство и пишете приложение на Flutter;

  • компилируете прошивку и прошиваете ваш чайник.

 Вуаля, у вас есть чайник со скелетоном Flutter.

Почему же Flutter так хорош?

Flutter легко портируется на разные платформы, потому что у него четкое разделение на три слоя и изначально очень сильная и продуманная архитектура:

Фреймворк Flutter состоит из трех основных уровней:

  1. Framework (Dart). Этот слой реализован полностью на языке Dart и включает все, с чем непосредственно взаимодействует разработчик: систему виджетов, анимаций, обработку пользовательских событий и так далее. Код фреймворка — кроссплатформенный и не требует изменений при запуске на различных операционных системах.

  2. Flutter Engine. Это высокопроизводительный движок, написанный на C/C++, который отвечает за отрисовку интерфейса (через Skia или Impeller) и выполнение Dart-кода. По факту именно этот слой отвечает за рендеринг красивых виджетов, которые разрабатывает Flutter-разработчик. Движок можно собрать под любую целевую платформу. Например, создавая собственную систему, вы можете собрать Flutter Engine под нее, чтобы использовать все возможности фреймворка без модификации его верхнего уровня. Основная задача этого слоя — обеспечить выполнение кода и отрисовку графики.

  3. Embedder. Это низкоуровневый слой, который связывает движок Flutter с конкретной платформой. Он отвечает за создание окна для рендеринга, обработку ввода, управление жизненным циклом приложения и взаимодействие с системными API. При портировании Flutter на новую платформу модификации требует именно Embedder, так как он определяет, как и где движок будет рисовать и как приложение интегрируется с операционной системой.

Вывод

Хочу закончить первую часть про преимущества Flutter следующим: список платформ, которые я упоминал, лет через 10 — как минимум удвоится или утроится. Потому что сейчас создавать платформы стало намного проще, помогают мультиагентные системы. Если вы пишете приложение, скорее всего, через какое-то время его потребуется портировать на новые системы, которые могут появиться. Flutter в этом плане — незаменимый инструмент. 

Во второй части статьи я расскажу, как начать проект, чтобы легко портировать его на разные платформы. А пока делитесь в комментариях, чем вам нравится Flutter (или нет).

Комментарии (1)


  1. TrueRomanus
    13.11.2025 13:47

    "пишем код один раз. Так вот, это 100% про Flutter." весь платформо-специфичный код тоже обладает таким свойством?