[Перевод] Перспективы развития Flutter
Hola, Amigos! С вами Саша Чаплыгин, Flutter-dev. После мероприятия Flutter Forward Тим Снитч написал краткую выжимку о развитии Flutter в 2023 году. Подготовил перевод статьи, который полезно почитать всем Flutter-разработчиком.
Я и мои коллеги пишем о том, что такое быть Flutter-разработчиками и рассказываем о внутренней кухне проектов в телеграм-канале Flutter.Много. Заходите, будем вас ждать :)
Flutter — это набор инструментов для разработки пользовательского интерфейса, который позволяет разработчикам создавать мобильные и веб-приложения и использовать для этого одну общую базу исходного кода.
Набор инструментов Flutter работает быстро за счет эффективного использования аппаратных ресурсов смартфонов или компьютеров, поддержки видеокарт с аппаратным ускорением и машинного кода. Он дает специалистам работать максимально продуктивно с помощью Hot Reload, которое позволяет сразу же увидеть изменения кода в приложении. Кроссплатформенность Flutter помогает выполнять развертывание на самых разных платформах с сохранением исходного кода и гарантированной совместимостью и работоспособностью. Этот набор инструментов полностью создан на базе открытого исходного кода, не нужно приобретать лицензии или платить за инструменты для разработки.
Flutter доказал свою популярность — на сегодняшний день разработчики создали с его использованием более 700 000 приложений: от небольших, но вполне перспективных приложений начинающих компаний до программных продуктов корпоративного уровня, которые созданы для удовлетворения важных потребностей крупных корпораций. В Google тоже считают Flutter полезным рабочим инструментом. В настоящий момент добавляется его поддержка в другие инструменты для разработчиков в Google Ads, Google Maps, Google Pay и Firebase.
С помощью Flutter мы сократили объем программного кода на 66% и сохранили ту же функциональность… это означает меньше ошибок для разных платформ и меньше технических недоработок в будущем.
Кенечи Уфонду (Kenechi Ufondu), инженер-программист, Google Classroom.
Первая версия Flutter предлагала набор инструментов для создания мобильных приложений на базе Android и iOS, а в третью версию уже включили поддержку платформ Windows, macOS, Linux, веб-приложений и встроенных платформ для использования с Flutter. В январе 2023 представили последнюю стабильную версию Flutter 3.7, в которую добавлен целый набор новых функций: механизм визуализации для iOS, улучшенную поддержку Material 3 и виджетов в стиле iOS, обновленные решения для локализации, более эффективную обработку данных в фоновом режиме и обновления инструментов для разработчиков.
Что Flutter ждет в будущем? В этой статье вы узнаете о тех перспективных направлениях разработки, в которые команда Flutter вкладывает средства: еще более высокая скорость обработки графики, полная интеграция мобильных и веб-приложений, ранняя поддержка новых и перспективных архитектур и оперативное реагирование на отзывы разработчиков. Еще вы узнаете о тех рабочих проектах, которые запланированы на ближайшие несколько месяцев.
Оговорка: функции находятся в стадии разработки и могут быть изменены. Их демонстрируют с одной единственной целью: предоставить возможность разработчикам внести свой вклад в их оптимизацию.
Еще более высокая скорость обработки графики
Исторически сложилось, что кроссплатформенные фреймворки обеспечивали недостаточно высокое качество графики. Это было связано со сложностями при создании слоя абстракции. В Flutter используется принципиально иной подход: в наборе инструментов предусмотрен собственный слой визуализации, который обеспечивает аппаратное ускорение обработки графики, а изображение сохраняет высокое качество на любом устройстве. В планах инвестировать в обеспечение более высокой скорости обработки графики, что дополнительно расширит уже существующие преимущества Flutter в этом направлении.
На мероприятии Flutter Forward рассказали о новых успехах в области разработки Impeller, механизма визуализации Flutter следующего поколения. Технология Impeller оптимизирована для использования во Flutter. Это обеспечивает дополнительную гибкость работы, широкие возможности для управления графическим конвейером и целый ряд других преимуществ. Impeller дает более стабильную и предсказуемую скорость работы за счет использования предварительно скомпилированных шейдеров. Механизм визуализации использует преимущества примитивов Metal и Vulkan, современных низкоуровневых API платформы iOS и Android. При этом он эффективно использует многозадачный режим работы, распределяет по потокам рабочие нагрузки, которые связаны с обработкой одиночных кадров.
Одно из преимуществ разработки с нуля заключается в том, что архитектура может поддерживать совершенно новые сценарии использования. Недавно была реализована поддержка пользовательских шейдеров, и уже сейчас можно посмотреть примеры полноценной интеграции с иерархией виджетов Flutter. Однако работа в этом направлении не ограничивается только мобильными устройствами: уже реализована ранняя поддержка пользовательских шейдеров для веб-приложений. Причем один и тот же код теперь отвечает за работу функций с аппаратным ускорением в iOS, Android и в браузере.
Сейчас начинается подготовительная работа над реализацией поддержки 3D-изображений в Flutter. На Flutter Forward было показано, как можно импортировать модели, созданные в Blender, и даже использовать функцию горячего подключения для выполнения итераций в Blender в режиме реального времени и просмотра результатов непосредственном в работающем приложении. Это только начало. Добавление 3D-изображений и пользовательских шейдеров позволяет поднять качество графики на новый уровень.
Полная интеграция мобильных и веб-приложений
Пусть и можно написать полноценное приложение, используя только Flutter и Dart, разработка программных продуктов в большинстве случаев предусматривает использование также и внешнего программного кода. Если говорить о веб-приложениях, Flutter может использоваться как встроенный компонент в рамках более крупного приложения. В мобильных приложениях может потребоваться вызов системных API или стороннего кода, который написан на другом языке. Поэтому второе направление инвестиций — это обеспечение полной интеграции мобильных и веб-приложений.
Для веб-приложений разработана новая функция, которую назвали »встраивание элементов» (Element Embedding). Она позволяет добавлять элементы Flutter в любое стандартное веб-приложение
Пакета JS был переработан, чтобы обеспечить операционную совместимость программного кода JavaScript и Dart. С помощью пакета JS можно добавлять к любой функции кода Dart атрибут @JSExport, а затем вызвать его из кода JavaScript.
Совместное использование этих двух новых функций создает новые перспективные сценарии использования Flutter для создания веб-приложений. В ролике можно посмотреть на простое приложение Flutter, которое встроено в веб-страницу на основе HTML. Применяется анимированный эффект вращения с использованием CSS. Даже при вращении элементы Flutter остаются интерактивными. В этом примере также показано, как можно использовать HTML-кнопку и обработчик событий JavaScript для внесения изменений в состояние Flutter, и наоборот.
С помощью функции Element Embedding можно встроить Flutter в элемент
Что касается Android и iOS, Flutter уже давно поддерживает интеграцию с системными API с помощью platform channels. Раньше разработчик приложения нужно было владеть несколькими языками программирования. Кроме того, требовалось наличие достаточного большого объема шаблонного кода.
Сейчас в работе создание нового подхода к обеспечению операционной совместимости систем, который позволит вызывать библиотеки напрямую. Если говорить об iOS, то в процессе работа над функциональной совместимостью FFI для C, добавляется поддержка библиотек Swift и Objective-C. На Android используется JNI для объединения библиотек Jetpack, написанных на Kotlin. Dart с помощью новой команды автоматически создает привязки для обеспечения операционной совместимости нескольких языков программирования и соответствующего преобразования классов данных. Когда эта работа будет завершена, разработчики Flutter смогут вызывать новые библиотеки Jetpack или iOS без необходимости использования плагина или изучения другого синтаксиса API. Это также значительно облегчит работу разработчиков плагинов. Для получения дополнительной информации можно ознакомиться с примером разработки.
Ранняя поддержка новых и перспективных архитектур
Flutter можно использовать для широкого спектра устройств и форм-факторов. Для того, чтобы разработчики могли поддерживать современные функциональные возможности, активно инвестируются средства в третье направление — раннюю поддержку новых и развивающихся архитектур.
WebAssembly достиг высокого уровня технологического развития в качестве платформонезависимого формата двоичных инструкций и постепенно получает все более широкую поддержку в современных браузерах. Он позволяет использовать веб-платформу с другими языками программирования, не ограничиваясь только JavaScript. В совместной работе с командой специалистов Chrome и другими партнерами по проекту WebAssembly команда Flutter добавила встроенные сборщики мусора. Это новое расширение WebAssembly поддерживается в последних тестовых сборках Chrome с помощью набора экспериментальных функций Chrome Flags.
Другой перспективной платформенной архитектурой является RISC-V — архитектура набора команд (ISA) на базе открытого исходного кода, которая нужна для различных сценариев использования. Команда Android недавно рассказала о работе по добавлению в программные продукты поддержки RISC-V. Теперь и Dart работает с RISC-V. На конференции Flutter Forward представили ClockworkPi DevTerm Kit R-01 — портативный терминал собственной разработки. Он работает под управлением Linux. Поддержка RISC-V будет особенно актуальной для встраиваемых систем, т.к. Flutter может предоставить мощный набор инструментов разработки пользовательского интерфейса для различных сценариев использования.
Оперативное реагирование на отзывы разработчиков
Самым важным вопросом является высокая продуктивность работы разработчиков. Заключительное, четвертое направление инвестиций в будущее — это оперативное реагирование на отзывы разработчиков, как при работе с Flutter, так и с Dart.
Официально представлен Dart 3, в котором реализована функция обеспечения нулевой безопасности (Null Safety). В этой версии также были удалены функции, которые сегодня потеряли свою актуальность и мало используются. Уже идет подготовка и к выпуску альфа-сборок Dart 3, а также соответствующих версий сборок Flutter, чтобы разработчики могли начать тестирование пакетов и приложений. Для получения дополнительной информации о Dart 3 можно прочитать статью в блоге Dart.
Инвестируются средства в создание новых функциональных возможностей для Flutter-разработчиков. После успешного выпуска набора инструментов для разработки казуальных игр, который анонсировали на конференции Google I/O в прошлом году, сейчас представляется первая версия набора инструментов для разработки приложений для публикации новостей. Она поможет издателям и другим поставщикам новостного контента отказаться от необходимости создания собственного приложения с нуля и быстрее выйти на рынок. Набор инструментов содержит все необходимое для создания приложений для публикации информационных статей: навигацию и поиск, регистрацию пользователей, рекламу, уведомления, профили пользователей и подписки. В нем используются результаты, которые получены в ходе исследования Google News Initiative.
Двигаемся вперед вместе
Продолжает расширяться экосистема Flutter — появился FlutterFlow, который представляет собой систему малокодовой разработки для создания нативных мобильных приложений. И проект Widgetbook, который предоставляет гибкие инструменты для совместной работы дизайнеров и разработчиков для проектирования пользовательского интерфейса.
На этом изображении представлены новые направление развития:
Если интересно изучать Flutter, подписывайтесь на наш с коллегами телеграм-канал Flutter.Много.