Google представил Flutter 2: что нового

3 марта международное Flutter-сообщество смотрело презентацию Flutter Engage, где представили Flutter 2. Стабильная поддержка на web, поддержка dart 2.12, создание и запуск рекламы, обновленный DevTools, Flutter Fix и новые виджеты. Подробнее в статье.

Image: Google
  • На Flutter можно разрабатывать для Web, Desktop, embedded и мобильных устройств.
  • Показан пример приложения, которое работает на всех платформах – Flutter Folio.
  • Уже опубликовано более 150 000 приложений на Flutter.

Web

Стабильная версия

Поддержка Flutter для Web перешла с бета-версии в стабильный релиз. Теперь Flutter, по уверению Google, также фреймворк для создания многофункциональных интерактивных веб-приложений. Посмотрим захватит ли теперь Flutter мир веб-разработки?:)

Кейс web-приложения на Flutter от оператора мобильной виртуальной сети Moi Mobiili Image: Google

В первую очередь Google сосредоточился на производительности и улучшении точности рендеринга. В дополнение к модулю визуализации HTML, добавлен новый модуль визуализации на основе CanvasKit. Также добавлены специальные веб-функции, такие как виджет «Ссылка», чтобы приложение, работающее в браузере, выглядело как веб-приложение.

Вот тут и тут можно посмотреть пример создания веб-приложения.

Sound null safety

Долгожданное обновление – Sound null safety для Dart

Sound Null Safety – существенное дополнение к языку Dart, которое еще больше усиливает систему типов, отделяя типы, допускающие значение NULL, от типов, не допускающих значения NULL. Это позволяет разработчикам предотвращать сбои во время выполнения – частую причину сбоев приложений. Благодаря включению проверок в систему типов эти ошибки могут быть обнаружены во время разработки. Null safety полностью поддерживается в стабильной версии Flutter 2, которая содержит Dart 2.12.

В репозитории пакетов pub.dev уже опубликовано более 1000 null safety пакетов, в том числе сотни пакетов от команд Dart, Flutter, Firebase и Material.

Подробнее тут.

Flutter Desktop

Теперь разработчики могут опробовать Flutter Desktop

Поддержка Flutter для настольных ПК доступна в стабильном канале под флагом раннего выпуска. Это значит,что все готово к тому чтобы попробовать разработку под Desktop в своих приложениях, пока не выйдет стабильная версия в этом году.

Были добавлены следующие изменения:

  • Улучшена работа с текстом, чтобы она была такой же, как и на всех поддерживаемых платформах: выделения, перетаскивания, взаимодействие с клавиатурой и мышью. Например перетаскивания мышью теперь начинается немедленно, вместо ожидания задержки, необходимой при обработке сенсорного ввода.
  • Было добавлено контекстное меню в виджеты TextField и TextFormField.
  • В виджет ReorderableListView были добавлены ручки захвата для возможности перемещения элементов списка, без ожидания долгого нажатия.
ReorderableListView теперь имеет ручки для удобного перетаскивания мышью. Image:  Google
  • Обновлена полоса прокрутки, которая отображается правильно для форм-фактора рабочего стола.
  • Реализованы интерактивные функции, которые ожидаются на рабочем столе, в том числе возможность перетаскивать ползунок, щелкать дорожку для перехода на страницу вверх и вниз, а также отображать дорожку при наведении курсора мыши на любую часть экрана.
  • Добавлен класс ScrollbarTheme с помощью которого можно настроить ее внешний вид. Работа с дополнительными функциями ПК: например, двойной щелчок по файлу данных в проводнике Windows для открытия файла в приложении.
  • Улучшена работа с изменением размера – теперь оно более плавное как Windows, так и для macOS.
  • Обновлена документация, в которой описано, что необходимо сделать, чтобы начать разработку под Desktop.

Платформенные адаптивные приложения: Flutter Folio

Пример приложения, хорошо работающего независимо от размера экрана и способа ввода

Flutter поддерживает три платформы для продакшн приложений (Android, iOS и Интернет) и еще три в бета-версии (Windows, macOS и Linux). Чтобы создавать адаптированные приложения, хорошо отображаемые на маленьких, средних и больших экранах, создали Flutter Folio.

Folio – это простой пример приложения, которое хорошо работает на нескольких платформах на основе единой базы кода. Вот тут можно познакомиться с исходным кодом Folio, чтобы сделать платформу собственных приложений адаптивной.

Image: Google

Мобильная реклама с помощью Google Mobile Ads

Бета-версия Google Mobile Ads SDK для Flutter

Появилась бета-версия Google Mobile Ads SDK для Flutter. Это новый плагин, который предоставляет встроенные баннеры и нативную рекламу в дополнение к существующим форматам оверлеев (оверлейные баннеры, межстраничные объявления). Этот плагин объединяет поддержку AdManager и Admob и позволяет создавать различные форматы рекламы в приложениях Flutter.

Image: Google

Разработчики говорят, что уже тестировали этот формат. Например, латиноамериканская музыкальная платформа для независимых исполнителей Sua Musica (более 15 тысяч исполнителей и 10 миллионов MAU) запустила свое новое приложение на Flutter с плагином Google Mobile Ads SDK для Flutter. Количество показов увеличилось на 350%, CTR – на 43%, а эффективная цена за тысячу показов – на 13%.

На flutter.dev создана страница рекламы, где можно найти все полезные ресурсы, такие как руководство по внедрению плагина, кодовая таблица встроенных баннеров и нативной рекламы, кодовую таблицу оверлейных баннеров, межстраничных объявлений и видеорекламы с вознаграждением.

Новые возможности iOS

178 улучшений

Среди них:

  • Работа с восстановлением состояния.
  • Cоздание IPA непосредственно из командной строки без открытия Xcode.
  • Обновление версии CocoaPods.
  • Новые виджеты для iOS.

AutocompleteCore и Scaffold Messenger

Новые виджеты

В Flutter 2 появилось два дополнительных новых виджета: AutocompleteCore и ScaffoldMessenger.

AutocompleteCore – это автодополнение в поисковой строке, которое выводится в качестве выпадающего окна с предложениями.

ScaffoldMessenger был создан для решения ряда проблем и упрощения работы со SnackBar. Теперь SnackBar сохраняет свое состояние при переходе между различными Scaffold и остается на экране.

AutocompleteCore и ScaffoldMessenger могут показаться минорными обновлениями. Но думаем, что все, кто работал с Flutter и пытался реализовать Autocomplete самостоятельно, поймут всю их прелесть. ScaffoldMessenger, наверное следовало бы сделать с самого начала. Потому что работа со snackbar, которая была реализована через Scaffold, вызывала много вопросов.

Добавление нескольких Flutter модулей в существующие нативные приложения

Добавление функции Add-to-App

Функция Add-to-App – отличный способ повторно использовать код Flutter на обеих мобильных платформах, сохраняя при этом существующую базу нативного кода. Переплетение Flutter и собственных экранов затрудняет поддержку состояний навигации, а интеграция нескольких Flutter моделей требует много памяти.

Во Flutter 2 снижена стоимость статической памяти для создания дополнительных модулей Flutter на ~ 99% до ~ 180 КБ на экземпляр.

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

Flutter Fix

Инструмент командной строки, который позволяет заменять устаревшие API в кодовой базе проекта

Чтобы не мешать более, чем 500 000 разработчикам и избежать нарушения растущего числа строк кода с внесением изменений в API инфраструктуры, придумали Flutter Fix. По уверению Google, Flutter Fix находит все устаревшие методы и переменные и помогает обновить их.

Flutter Fix – это комбинация нескольких вещей. Во-первых, есть новый параметр командной строки для инструмента командной строки dart, называемый dart fix. Он знает, где искать список устаревших API и как обновлять код с помощью этих API. Во-вторых, это сам список доступных исправлений, который входит в комплект Flutter SDK, начиная с версии 2. И, наконец, это обновленный набор расширений Flutter для IDE VS Code, IntelliJ и Android Studio, которые знают, как раскрыть то же самое.

Flutter DevTools

Обновление и новые фичи

DevTools – это инструмент, который следует использовать для отладки приложений Flutter, в новой версии его переименовали в Flutter DevTools и добавили следующие фичи:

  • Уведомления в IDE со ссылками на проблемы (раньше было только в командной строке).
  • Просмотр изображений в высоком разрешении для контроля использования памяти.
  • Улучшена работа с макетами во Flutter Inspector.
  • Добавлена информация о среднем FPS и улучшено удобство использования в диаграмму кадров Flutter.
  • Вызов неудачных сетевых запросов в профилировщике сети с красными метками ошибок.
  • Новые диаграммы просмотра памяти стали быстрее, меньше и проще в использовании, включая новую карту для описания активности в определенное время.
  • Добавлен поиск и фильтрация во вкладку Logging.
  • Представление «Производительность» переименовано в «Профилировщик ЦП», чтобы было более понятно, какие функции он предоставляет.
  • Добавлена временная сетка в диаграммы пламени CPU Profiler.
  • Представление «Временная шкала» переименовано в «Производительность», чтобы было более понятно, какие функции оно предоставляет.

Расширение Android Studio / IntelliJ

Плагин Flutter для семейства IDE IntelliJ также получил ряд новых функций для Flutter 2. Для начала есть мастер нового проекта, который соответствует новому стилю мастера в IntelliJ.

0
23 комментария
Написать комментарий...
...
Ответить
Развернуть ветку
Yarik Elk

Кто-то реально пересобрал свой проект под web, чтобы оценить, насколько все стало лучше? А то по комментам на ycombinator.com далеко все не радужно.

Ответить
Развернуть ветку
Andrey MK

Да, я пробовал.Сразу упали плагины filebase.Попробовал.Откатился назад.Надо подождать пока все свои пакеты обновят .Думаю еще 2 месяца ждать прийдется.Слишком много у флатера завязано на внешних плагинах а их обновлять надо при использовании последней версии

Ответить
Развернуть ветку
borodutch

Все просто: нужно уважать своих пользователей и не пользоваться firebase :3

Ответить
Развернуть ветку
Andrey MK

Да ладно, firebase огромная экосистема,на ней живут миллионы и не знают про это.Рано просто все эти новшества внетрять

Ответить
Развернуть ветку
Игорь Кравченко

довольно неплохо получилось, особенно учитывая количество усилий - https://beta.meows.app/ , сейчас буду переписывать навигацию на использование  https://pub.dev/packages/navme , чтобы url работали)

Ответить
Развернуть ветку
Dimitry

"Мы сделали фреймворк, который отлично работает на всех платформах"

Заглавное приложение этого анонса Flutter Folio в мобильном вебе:

Ответить
Развернуть ветку
Павел Котляров

Главная интрига - добавят ли поддержку телевизоров. Ну, и я все еще надеюсь, что Apple со Swift и Swift UI расчехлится.

Ответить
Развернуть ветку
Andrey Gordeev

Да свифт уже всё, прошлый век. Флаттер по сравнению с ним - небо и земля.

Ответить
Развернуть ветку
Павел Котляров

Чем? Именно как платформы и UI либы или языки? Swift интересен как замена C++ во многих задачах.

Ответить
Развернуть ветку
Vernat Khisamov

Как замена Rust интересен

Ответить
Развернуть ветку
Павел Котляров

Сам Rust не смотрел, но по свидетельствам очевидцев это скорее замена C.

Ответить
Развернуть ветку
George Khromchenko

А для Ubuntu есть плагины для интеграции с Gnome? Ну типа там чтобы в трее иконка была, меню контекстное?

И как там с виджетами все обстоит, есть что-то консистентное к платформе или делаем Material / Cupertino?

Ответить
Развернуть ветку
maguto dev

Знатоки! Вопрос.
Я правильно понял, теперь приложение написанное на flutter можно собрать и для мобильных устройств и для ПК и для веба???

Ответить
Развернуть ветку
Yarik Elk

В целом да (для ПК пока не стабильная ветка). Главное обращать внимание на поддерживаемые платформы используемых плагинов

Ответить
Развернуть ветку
Д Хб

Не понял, Mac для кодинга под iOS нужен или нет?

Ответить
Развернуть ветку
Yarik Elk

Мак, как минимум, всегда нужен для сборки и подписи приложения

Ответить
Развернуть ветку
Ingvar K

VMware более чем достаточно

Ответить
Развернуть ветку
Yarik Elk

Верно, правильнее написать MacOS с XCode нужны всегда. Также можно использовать Хакинтош.

Ответить
Развернуть ветку
Павел Котляров

Поди и готовые pipeline‘ы где-то есть

Ответить
Развернуть ветку
Mike Kosulin

Еще для некоторых задач можно codemagic использовать

Ответить
Развернуть ветку
Roman

О бози мой

Ответить
Развернуть ветку
Elendiar

Какой смысл писать для десктопа если нету поддержки мультиоконности, управлением стилем окна, да даже меню трей-иконки нету (хотя плагин какой-то есть).

Ответить
Развернуть ветку
20 комментариев
Раскрывать всегда