Что нового во Flutter 3.19

Hola, Amigos! На связи Саша Чаплыгин, Flutter-dev агентства продуктовой разработки Amiga. Мы с командой подготовили для вас перевод статьи о новинках Flutter в версии 3.19. Оригинал тут. Приятного чтения!

Flutter.Много — это комьюнити для мобильных разработчиков! Кейсы, опыт, полезные советы, проверенные плагины/библиотеки и живые обсуждения в чате: всё это вы можете найти в нашем телеграм, который мы ведем всей командой. К нам присоединилось уже больше 2000 мобильных разработчиков. Приходи и ты!

Введение

Flutter 3.19 является свидетельством непрерывного развития платформы Flutter. В этом выпуске, ориентированном на расширение возможностей разработчиков и улучшение UX, представлено множество функций и улучшений, которые удовлетворяют разнообразные потребности создателей приложений.

Ключевые обновления Flutter 3.19:

  • Gemini API. Мощный инструмент для детального контроля над анимацией виджетов. Он не только открывает новые возможности для творчества, но и повышает качество взаимодействия с пользователем в приложениях Flutter.
  • Обновления Impeller. Механизм рендеринга Impeller значительно улучшился, что повышает производительность и более плавную разработку. Это обновление подчеркивает стремление Flutter оптимизировать основные компоненты, которые обеспечивают быстроту реагирования и визуальную привлекательность приложений.
  • Поддержка Windows Arm64. Этот обновление расширяет возможности приложений Flutter, обеспечивая их плавную интеграцию с более широким спектром платформ и устройств.

Flutter 3.19 представляет множество новых возможностей для разработчиков и повышает производительность приложений. Одной из выдающихся особенностей этого выпуска является появление Dart SDK для Gemini. С помощью Gemini разработчики получают доступ к мощному набору инструментов и библиотек, которые позволяют им создавать более сложные и отзывчивые приложения, чем когда-либо прежде.

Интеграция AI с Gemini API

Во Flutter 3.19 интеграция искусственного интеллекта Google с API Gemini знаменует собой важную веху в эволюции разработки приложений. Благодаря бета-версии Google AI Dart SDK у разработчиков появилась возможность наполнить свои приложения Dart и Flutter функциями искусственного интеллекта.

Новый пакет pub.dev google_generative_ai и вспомогательные ресурсы позволяют встраивать функции на основе искусственного интеллекта в приложения Dart и Flutter посредством интеграции Dart с API Gemini. Появляется широкий спектр возможностей для создания интеллектуальных и производительных приложений для Android, iOS, веб-сайтов, macOS, Windows и Linux из единой базы кода.

С помощью Google AI Dart SDK можно:

  • Легко интегрировать функции искусственного интеллекта: добавить расширенные функции генерации текста, обобщение, чат и многое другое с минимальной настройкой.
  • Воспользоваться самой универсальной и функциональной моделью Google: Gemini основана на обширных исследованиях и разработках Google в области машинного обучения, предоставляя доступ к генеративным возможностям искусственного интеллекта, которые будут продолжать совершенствоваться.
  • Ускорить разработку приложений на основе искусственного интеллекта. Сосредоточиться на логике приложения и UX, а SDK возьмет на себя тонкости взаимодействия с AI.
  • Создать кроссплатформенные приложения на базе AI. С легкостью создать генеративные функции искусственного интеллекта для настольных, веб- и мобильных приложений с помощью Flutter.
  • Использовать Gemini API в более чем 180+ странах и территориях. Доступные регионы.

Что вы можете создать? Ознакомьтесь с кратким руководством по Dart, чтобы получить подробное пошаговое руководство по настройке.

Улучшения платформы

Давайте углубимся в детали улучшений Flutter 3.19.

Улучшения прокрутки:

  • Ранее прокрутка двумя пальцами в два раза быстрее решалась путем настройки значения по умолчанию ScrollBehavior с помощью MultiTouchDragStrategy.latestPointer. Это обеспечивает единообразную прокрутку независимо от количества используемых пальцев. Дополнительную информацию об этом изменении см. в руководстве по миграции.
  • Внесены исправления ошибок в SingleChildScrollView и ReorderableList, устранены зарегистрированные сбои. Параллакс-скроллинг также был доработан, чтобы быстро останавливать прокрутку при перетаскивании или касании во время прокрутки в любом направлении.
  • Виджет TableView в пакете two_dimensional_scrollables получил обновления, предлагающие дополнительную доработку, поддержку объединенных ячеек и интеграцию новых функций из 2D-основы, представленных во Flutter 3.16.

Стиль анимации

Представлен новый виджет AnimationStyle, любезно предоставленный членом сообщества Flutter TahaTesser. Этот виджет позволяет разработчикам переопределить поведение анимации по умолчанию в различных виджетах, таких как MaterialApp, ExpansionTile и PopupMenuButton. Разработчики теперь имеют больший контроль над curves (эффектами) и продолжительностью анимации.

Использование SegmentedButton.styleFrom

Член сообщества Flutter @AcarFurkan представил styleFrom согласованный с другими типами кнопок. Этот метод упрощает создание ButtonStyle SegmentedButton, облегчая совместное использование сегментированных кнопок или настройку SegmentedButtonTheme приложения.

Реализация адаптивного переключателя

Был представлен Adaptive Switch, аналогичный macOS и iOS, а также внешний вид Material Design в других местах. Не полагаясь на библиотеку Cupertino, этот адаптивный компонент поддерживает единообразный API на всех платформах.

См. запрос на включение адаптивного переключателя и живой пример на странице API конструктора Switch.adaptive.

SemanticsProperties для идентификатора доступности

Новый идентификатор доступности в SemanticsProperties обеспечивает важный идентификатор семантического узла в собственной иерархии доступности. Благодаря участнику сообщества @bartekpacia это изменение затрагивает как движок, так и платформу, улучшая доступность на Android и iOS.

Расширенный доступ к состоянию текстового виджета

Добавлена поддержка MaterialStatesController в TextField и TextFormField. Это улучшение позволяет разработчикам прослушивать изменения MaterialState, предлагая более динамичный контроль над состояниями текстовых виджетов.

Улучшения стека истории отмены

Устранена проблема, из-за которой история отмены/повтора могла исчезнуть на японских клавиатурах. Теперь в запись можно вносить изменения UndoHistory до того, как она будет помещена в стек. Это обеспечивает более надежный и настраиваемый процесс отмены/повтора для пользователей.

Модернизация движка

Flutter 3.19 знаменует собой существенные обновления движка, особенно благодаря заметному прогрессу, достигнутому в Impeller, движке рендеринга, лежащем в основе Flutter. Давайте углубимся в ключевые аспекты этих улучшений движка.

Улучшения Impeller в Android OpenGL

В предыдущей версии 3.16 Flutter предложил пользователям изучить Impeller на устройствах Android с поддержкой Vulkan, что охватывает 77% используемых устройств Android. В последующие месяцы серверная часть OpenGL Impeller претерпела значительные улучшения, достигнув функциональности со своим аналогом Vulkan. Примечательно, что была добавлена поддержка MSAA, обеспечивающая правильную визуализацию приложений Flutter практически на всех устройствах Android. Хотя некоторые функции, такие как пользовательские шейдеры и полная поддержка внешних текстур, уже не за горами.

Будущее развитие

После обеспечения точности рендеринга основным приоритетом в период предварительного просмотра Impeller для Android является производительность. В работе будут использованы преимущества подпроходов Vulkan, чтобы значительно улучшить производительность расширенных режимов наложения. Ожидается, что изменение стратегии рендеринга от постоянной тесселяции каждого пути CPU к подходу «сначала чертеж (схема), затем рисунок» значительно снизит загрузку CPU Impeller как на Android, так и на iOS. Новая реализация блюра по Gaussian будет соответствовать пропускной способности реализации Skia и улучшит использование блюра в iOS.

Улучшения API

Информация о глифах

В этом выпуске представлены два новых метода для dart:ui объекта Paragraph: getClosestGlyphInfoForOffset и getGlyphInfoAt, каждый из которых возвращает объект нового типа GlyphInfo. Разработчики могут изучить документацию по новому типу GlyphInfo для получения подробной информации.

Трассировка GPU

В Impeller on Metal (iOS, macOS, Simulator) и на устройствах Android с поддержкой Vulkan движок Flutter теперь предоставляет время GPU для каждого кадра на временной шкале, доступное в отладке и сборках профиля. Пользователи DevTools могут проверять синхронизацию кадров графического процессора под заголовком «GPUTracer», что обеспечивает улучшенную видимость показателей производительности.

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

Обратите внимание: поскольку устройства Android, не поддерживающие Vulkan, могут неверно сообщать о своей поддержке запроса синхронизации GPU, трассировку GPU Impeller можно включить только с помощью флага, установленного в файле AndroidManifest.xml на этих устройствах.

<meta-data android:name="io.flutter.embedding.android.EnableOpenGLGPUTracing" android:value="true" />

Оптимизация производительности

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

Константы специализации для повышения производительности

Движок Impeller теперь поддерживает константы специализации — функцию, которая существенно уменьшает размер несжатого двоичного файла движка Flutter, повышая общую производительность почти на 350 КБ.

Ускорение фонового фильтра

В этом выпуске заметно улучшена производительность фоновых фильтров и блюра в Impeller. Удалив возможность чтения экранной текстуры, в сценах с несколькими фоновыми фильтрами производительность повышается на 20–70 %, в зависимости от сложности. Более того, Impeller больше не сохраняет безоговорочно трафаретный буфер для каждого фонового фильтра, что приводит к значительному улучшению времени обработки кадров GPU и времени процессора растровых потоков.

Улучшения Android

Веб-валидатор диплинков

Представлен новый валидатор диплинков Flutter, упрощающий их реализацию. Теперь разработчики могут проверять конфигурацию assetlinks.json файлов на Android, гарантируя правильную настройку и предоставляя рекомендации по реализации.

Поддержка Share.invoke

Кнопка «Поделиться» по умолчанию, ранее отсутствовавшая в Android, теперь добавлена в новой версии, что обеспечивает универсальную доступность всех кнопок контекстного меню по умолчанию на каждой платформе. Следить за текущей работой можно в PR #107578.

Обновление функции нативных ресурсов

Flutter 3.19 упрощает вызовы FFI через собственные ресурсы на Android, улучшая совместимость с функциями других языков в коде Flutter.

Слой текстуры в режиме гибридной композиции

Карты Google и лупа для ввода текста теперь работают в режиме гибридной композиции текстурного слоя (TLHC), что обещает более высокую производительность для приложений, использующих эти функции.

Настраиваемые общесистемные кнопки панели инструментов выбора текста

Приложения Android теперь могут включать настраиваемые элементы меню выбора текста, что обеспечивает большую гибкость Flutter TextField.

Улучшения iOS

Интеграция собственных шрифтов Flutter iOS

Текст Flutter на iOS теперь более точно соответствует рекомендациям Apple по дизайну: более мелкие шрифты расположены дальше для улучшения читаемости, а более крупные шрифты кажутся более компактными для экономии места.

Благодаря этим обновлениям Flutter 3.19 продолжает совершенствовать среду разработки, предлагая улучшенную производительность, оптимизированную функциональность и визуальную эстетику на платформах Android и iOS.

Обновления DevTools

Откройте для себя последние улучшения DevTools с Flutter 3.19, призванные улучшить опыт разработки и оптимизировать рабочие процессы отладки и профилирования.

Проверка диплинков на Android

В DevTools теперь есть новый инструмент и экран, предназначенные для проверки настройки диплинков на Android. Это обеспечивает плавный и безошибочный процесс интеграции диплинков, расширяя возможности навигации приложения.

Расширенное отслеживание активности каналов платформы

Изучите новую опцию в меню «Enhance Tracing», специально разработанную для отслеживания активности каналов платформы. Это дополнение оказывается неоценимым для приложений, использующих плагины, поскольку дает представление о взаимодействии между Flutter и собственным кодом.

Доступность экранов профилирования производительности и CPU

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

Улучшения боковой панели Flutter в VS Code

Теперь VS Code позволяет включать новые платформы, если они не включены для текущего проекта. Кроме того, меню DevTools на боковой панели предлагает удобную возможность открыть DevTools во внешнем окне браузера, обеспечивая бесшовную и настраиваемую среду разработки.

Чтобы узнать больше, ознакомьтесь с примечаниями к выпуску DevTools, 2.29.0 , 2.30.0 и 2.31.0 .

Разработка Desktop

Поддержка Windows Arm64

Flutter для Windows теперь включает в себя начальную поддержку архитектуры Arm64 благодаря похвальным усилиям члена сообщества @pbo-linaro. Она открывает путь к более эффективным и производительным приложениям Flutter, которые изначально работают на устройствах Windows Arm64. Хотя этот шаг все еще находится в разработке и прогресс отслеживается по проблеме GitHub #62597, он означает многообещающее улучшение для разработчиков Flutter, стремящихся оптимизировать свои приложения для более широкого спектра устройств Windows.

Экосистемный прогресс

Манифест конфиденциальности

Flutter теперь включает в себя манифест конфиденциальности для iOS, отвечающий будущим требованиям Apple.

Сторонние SDK расширяют функциональность приложения, но могут повлиять на конфиденциальность пользователей. Разработчики должны внимательно относиться к методам сбора данных. Apple представила манифесты конфиденциальности и подписи SDK на WWDC23 для повышения прозрачности. В манифестах конфиденциальности подробно описаны методы обеспечения конфиденциальности стороннего кода, что упрощает создание этикеток конфиденциальности. Подписи SDK обеспечивают целостность SDK во время обновлений версий, повышая безопасность цепочки поставок программного обеспечения. Начиная с весны 2024 года, материалы в App Store должны включать манифесты конфиденциальности и подписи для перечисленных SDK. Это требование применяется к новым приложениям и обновлениям, содержащим перечисленные SDK. Соблюдение требований обеспечивает прозрачность и целостность разработки приложений и поддерживает конфиденциальность пользователей.

Улучшение экосистемы пакетов Flutter и Dart

Экосистема пакетов Flutter и Dart остается ключевым фактором, позволяющим разработчикам создавать красивые и производительные приложения для любого экрана из единой базы кода. В 2023 году экосистема выросла на 26%: с 38 000 пакетов в январе до 48 000 в конце декабря.

По состоянию на январь 2024 года у Pub.dev более 700 000 активных пользователей в месяц. Команда Flutter по-прежнему заинтересована и стремится поддерживать этот рост в будущем, а также предоставлять разработчикам возможность создавать и вносить свой вклад в Flutter и Dart. В этом обновлении мы рассмотрим новейшие Flutter Favorites и результаты виртуального саммита Package Ecosystem, а также поделимся некоторыми заметными обновлениями и информацией, которую нужно знать.

Ознакомьтесь с январской публикацией в блоге о развитии экосистемы пакетов Flutter и Dart.

Устаревшие версии и критические изменения

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

Прекращение поддержки Windows 7 и 8

Прекращается поддержка Windows 7 и 8 в выпусках Dart 3.3 и Flutter 3.19. Этот стратегический сдвиг, схожий с подходом Microsoft, позволяет сосредоточиться на улучшении Flutter для современных операционных систем. Этот шаг закладывает основу для более безопасной, эффективной и многофункциональной среды разработки в поддерживаемых версиях Windows.

Устаревание Impeller Dithering Flag

В соответствии со стабильной версией 3.16 флаг Paint.enableDithering устарел. Чтобы получить полное представление об этом изменении, ознакомьтесь с подробным объяснением на нашем веб-сайте.

Устаревание iOS 11

Flutter прощается с поддержкой iOS 11 из-за сбоя во время выполнения, вызванного некоторыми сетевыми API. Следовательно, приложения, созданные на основе Flutter 3.16.6 и более поздних версий, не будут совместимы с устройствами под управлением iOS 11.

Подробности об устаревшем Auto Render Mode

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

Исправление Flutter в сочетании с быстрыми исправлениями в IDE поддерживает многие из этих устаревших версий. Массовые исправления можно эффективно реализовать с помощью dart fix инструмента командной строки. Кроме того, обратите внимание, что этот выпуск знаменует собой включение пакета flutter_driver в политику прекращения поддержки, пополнив ряды уже поддерживаемых пакетов, таких как flutter и flutter_test.

Заключение

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

Чтобы углубиться в особенности того, чего удалось достичь в этом выпуске, просмотрите примечания к выпуску и журнал изменений, чтобы получить полный список дополнений во Flutter 3.19.

Flutter 3.19, наряду с Dart 3.3 , теперь доступен в стабильной версии. Отправиться в это новейшее путешествие с Flutter так же просто, как запустить обновление Flutter.

Подписывайтесь на наш телеграм-канал Flutter.Много, чтобы быть в курсе новых публикаций и узнавать новое из мира кроссплатформенной разработки.

0
Комментарии
-3 комментариев
Раскрывать всегда