Привет, Хабр! Я Юра Петров, Tech Lead в Friflex и автор телеграм-канала «Мобильный разработчик»

Смотрели Flutter in Production? В этой статье расскажу, что говорит команда Flutter о прошлом, настоящим и будущем фреймворка, и отмечу, что показалось особенно интересным.

Три эры Flutter

Если вы вдруг не знаете, фреймворку в этом году 10 лет. За это время он прошел несколько стадий развития:

  • Экспериментальная эра. Задача была простая, сделать все быстрее, но никто точно не знал как. В итоге из экспериментального проекта Sky в 2018 году появился Flutter 1.0, библиотеки Cupertino и Material Widget для iOS и Android. Приложения действительно стали достойно выглядеть на всех платформах.

  • Эра роста. новые платформы, больше виджетов, рост сообщества. Flutter стал настоящим магнитом для разработчиков и их идей

  • Продакшн-эра. Все серьезно, Flutter — технология для миллиардов пользователей. Кто бы мог подумать?

28% новых приложений в App Store созданы на Flutter и другие цифры

Команда Flutter тоже подводит итоги года. И вот какие результаты: 

  • 528 виджетов. Как коллекция LEGO, только для UI.

  • 475 контрибьюторов за год. Эти ребята явно знают, чем заняться на выходных.

  • 92 000 участников в сообществе. Население небольшого российского города.

Больше миллиона разработчиков используют Flutter каждый месяц.

Планы на 2025: Flutter GPU, Direct Native Interop, Impeller, Live Widget Previewer и декораторы

Flutter GPU

Flutter GPU — низкоуровневый API для работы с графическим процессором напрямую через Dart. Поддерживает 3D-графику, помогает создавать сложные визуальные эффекты с минимальными задержками. Это круто, потому что расширяет сферу применения Flutter за пределы традиционных UI-приложений, включая визуализации данных, симуляции и даже AR/VR.

Команда Flutter работает над интеграцией Flutter GPU на macOS, Windows, Linux и веб-приложениях. Но пока это эксперимент, ничего не обещают. 

Еще Flutter GPU планирует интеграцию с такими инструментами, как Blender, чтобы импортировать 3D-модели в приложения через виджеты. Flutter Scene позволит брать стандартные модели, созданные в Blender, и отображать их как виджеты внутри приложения Flutter. 

Говорят, сможем создавать шутеры от первого лица, витрины продуктов и многое другое. Интересно, как будет развиваться это направление в области, где традиционно доминировали специализированные движки, такие как Unity или Unreal Engine.

Direct Native Interop 

Direct Native Interop — это способ взаимодействия с нативными API платформы без необходимости использовать платформенные каналы. Это одно из самых амбициозных направлений развития Flutter. Оно предполагает прямое взаимодействие с нативными API платформ (iOS, Android) из Dart. 

Например, для использования биометрической аутентификации (сканера лица или отпечатков) больше не нужно будет писать сложные мосты. Все соответствующие классы Dart будут создаваться автоматически. 

Плюс если Android, к примеру, выпустит новую функцию, можно будет просто добавить импорт в Dart-файл и пользоваться с первого дня. Наконец, код будет выполняться на том же потоке, что и нативный. Не будет прыжков между потоками, и производительность вырастет. 

Планы выглядят впечатляюще: автоматическая генерация Dart-классов для вызова нативных функций, поддержка новых API с первого дня, улучшение производительности… Но между дорожной картой и реализацией часто лежит пропасть из недооцененных технических проблем. Остается следить за обновлениями и готовиться к экспериментам. 

Если Direct Native Interop станет реальностью в 2025, это радикально упростит жизнь Flutter-разработчиков. А если нет — ну что ж, каналами пользуемся уже давно, справимся еще пару лет?

Impeller

Impeller — графический движок, который в новом выпуске стал стандартам и для Android. Сокращает время рендеринга на 97%, делает интерфейсы плавными даже в сложных анимациях. Экономит память до 100 МБ. 

В 2025 году команда планирует:

  • Продолжить улучшать поддержку графических API Vulkan (для Android) и Metal (для iOS), чтобы добиться более плавного рендеринга и более качественной работы. 

  • Включить поддержку многозадачности. Она позволит обрабатывать сложные графические сцены быстрее и эффективнее, не жертвуя качеством отображения на различных платформах.

  • Расширить возможностей Impeller для работы с 3D-графикой. Говорят, что будущие версии Impeller смогут работать с 3D-контентом на уровне, который раньше был доступен только в нативных приложениях. 

  • Оптимизировать Impeller для работы с новыми чипами и архитектурами вроде ARM64 и RISC-V. Это даст значительный прирост в производительности на новых устройствах.

Live Widget Previewer

Live Widget Previewer — инструмент, который поможет предварительно просматривать виджеты прямо в среде разработки (IDE), не запуская приложение целиком. 

Можно будет увидеть результат без запуска всего приложения, просто редактируя отдельные виджеты. Особенно полезная штука, когда надо быстро протестировать несколько вариантов расположения элементов или поиграться с размерами и отступами.

Декораторы (decorators) в Dart

Декораторы — это конструкции, которые позволяют добавлять или изменять поведение объектов или функций в декларативной манере — саму функцию или класс менять не надо. 

В Dart декораторы будут работать через сокращенный синтаксис для применения настроек, таких как выравнивание, цвета, отступы и другие свойства виджетов. Они будут оборачивать функции или методы, чтобы менять их поведение, не меняя саму структуру и логику. Идея в том, чтобы сократить количество кода для настройки виджетов.

Декораторы — выглядит интересно, но есть несколько моментов. Во-первых, синтаксис может сбить с толку тех, кто не привык работать с такими концепциями. Второй момент — скрытая логика. Например, если применяешь несколько декораторов, может быть не сразу понятно, какие именно стили применяются к виджету и в каком порядке. Но вообще, интересно посмотреть, как это будет работать в реальных проектах. 

Вперед, в продакшн ?

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


  1. cmyser
    18.12.2024 15:03

    Ожидал применение в продакшнне и подводные камни, а тут ничего


  1. Mox
    18.12.2024 15:03

    Мне интересно - а их новый движок - отвязан от Flutter?
    Ведь sika - это по сути независимая библиотека.


    1. mrDevGo Автор
      18.12.2024 15:03

      Нет, у impeller нет открытого api


  1. softshape
    18.12.2024 15:03

    Ищу замену Flutter. Недорого. У них проблема с багами - например примерно год назад в CameraX они сделали баг, который крашает камеру и вместе с ним приложение. Баг до сих пор не исправлен, соотв. наше приложение время от временя крашает тоже. Судя по новостям о сокращении команды разработчиков, исправления в ближайшее время можно не ждать.


    1. sayori1
      18.12.2024 15:03

      Причем тут команда flutter и плагин, который пилит сообщество? Flutter вообще за них не ручается. Если для вас баг настолько критический, то возьмите исходники и исправьте. Это нетрудно. Заодно окажете помощь сообществу.


      1. softshape
        18.12.2024 15:03

        Нетрудно. Ага. Почитайте https://github.com/flutter/flutter/issues/154241, где сами разработчики не могут баг поправить. Предположительный фикс был опубликован 12 часов назад (и еще не смерджен, насколько я понимаю) хотя о проблеме было известно с мая.


    1. mrDevGo Автор
      18.12.2024 15:03

      Странный у вас подход, вы хотите сказать, что уже год в мире Flutter не работают камеры? Давайте быть конкретными, если у вас проблема с плагином, идите в репо, сдайте ишью, и я думаю, ее быстро поправят. Если не хотите ждать, форкаете плагин и поправляете ручками. 

      Команда Flutter вообще здесь не при чем)


      1. Sineni
        18.12.2024 15:03

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