Flutter, открытый фреймворк Google для мультиплатформенных приложений, в последнее время набирает обороты: его используют как внутренние команды Google для таких проектов, как новое приложение Play Console, мобильное приложение Google Cloud и приложение Nearby Share под Windows, так и разработчики из Canonical (для нового установщика Ubuntu), французских железных дорог и других компаний. На Google I/O команда анонсировала ряд новых функций для фреймворка, который достиг версии 3.0 на прошлогодней I/O и теперь запускает версию 3.10.
Google также отметил, что в настоящее время существует более 1 миллиона опубликованных приложений на базе Flutter, по сравнению с 500,000 в середине 2022 года.
Поскольку на данный момент Flutter относительно стабилен, неудивительно, что команда работает над расширением некоторых из существующих возможностей и облегчением внедрения Flutter в существующие проекты. Но в то же время Google смотрит вперед и на новые технологии, уделяя особое внимание WebAssembly.
В версии 3.10 разработчики теперь могут легче интегрировать компоненты Flutter в свои существующие веб-приложения. Над этим Google начал работать некоторое время назад, но теперь разработчики могут интегрировать компоненты Flutter в веб-страницы так же, как любой другой CSS-элемент — и затем манипулировать ими так же, как элементами CSS.
В начале своего существования приложения Flutter в вебе, как правило, были полномасштабными, полноэкранными приложениями, которые часто основывались на существующих мобильных приложениях. “Мы начали с людей, которые создавали приложения, занимающие весь экран, которые часто начинали с «У меня есть мобильное приложение, и я хочу запустить его в Интернете». Но сейчас мы начинаем видеть людей, которые создают приложения, ориентированные на веб-опыт и хостинг», — сказал Тим Снит, директор Google по продуктам и UX для Flutter и языка программирования Dart.
Снит также отметил, что команда упорно работала над улучшением производительности Flutter в вебе (Flutter изначально был фреймворком для разработки мобильных приложений, а стабильная поддержка веб-страниц появилась только в версии 2 в 2021 году). В частности, это означает, что время загрузки теперь значительно сократилось.
Говоря о поддержке веба, команда Flutter продолжает работать над поддержкой WebAssembly (Wasm), несмотря на тесную связь фреймворка с языком Dart. Учитывая, что Wasm все еще находится на ранней стадии развития, многие его спецификации остаются на стадии разработки. Как отмечает команда Flutter, до недавнего времени в Wasm не было сборки мусора, но Google поработал с рядом команд в экосистеме Wasm для разработки расширения WasmGC, которое сейчас интегрируется в браузеры на базе Chromium. Благодаря этому команда теперь чувствует себя комфортно, добавляя поддержку предварительного просмотра для Wasm в свои предварительные каналы, позволяя разработчикам компилировать Dart в Wasm.
«У нас уже давно есть поддержка JavaScript производственного качества, но возможность привнести в веб нативную мощь скомпилированного опыта поможет еще больше», — сказал Снит. «Во многом это также связано с интеграцией. Если у вас есть код на Kotlin, Dart или других языках, который компилируется в веб, и возможность взаимодействовать с ними, это меняет всю основу. Иногда люди очень беспокоятся о том, что этот язык отличается от того языка, и рассматривают их как отдельные экосистемы. Для нас же важно, чтобы люди писали код на любом языке, на котором хотят, и Wasm внезапно привнес эту согласованность в нашу стратегию. Мы рады, что наконец-то добрались до этой точки и, возможно, ушли от диалогов о языке A против B».
Еще один недавний фокус команды Flutter — графическая производительность. Как команда объявила ранее в этом году, она полностью переписала свою среду рендеринга Impeller, и в версии 3.10 она теперь используется по умолчанию в приложениях для iOS. Благодаря этому, просто перейдя на последнюю версию Flutter, приложения получат значительный прирост производительности.
На Android Impeller сейчас находится в стадии превью. В нем движок опирается на библиотеку Vulkan, которую поддерживают все современные устройства Android (хотя Google предложит режим совместимости для старых устройств). Хотя может показаться необычным, что Android не первым получит эти обновления, Снит отметил, что графический движок Flutter на Android уже достаточно оптимизирован. Поэтому команда решила отдать приоритет iOS, где есть гораздо больше возможностей для улучшения графической производительности.