[Перевод] Flutter 3.19 — Что нового во Flutter
Gemini API, обновления Impeller и Windows Arm64.
Добро пожаловать в последнюю версию Flutter, версию 3.19! Это обновление знаменует собой еще один значительный шаг вперед в эволюции Flutter, предлагая разработчикам множество интересных функций и улучшений, позволяющих улучшить их опыт разработки приложений.
Обзор Flutter 3.19: Flutter 3.19 является свидетельством непрерывного развития платформы Flutter. В этом выпуске, ориентированном на расширение возможностей разработчиков и улучшение пользовательского опыта, представлено множество функций и улучшений, которые удовлетворяют разнообразные потребности создателей приложений.
Значение ключевых обновлений. Сердце Flutter 3.19 отражается на ключевых обновлениях, каждое из которых играет ключевую роль в формировании ландшафта разработки приложений:
Gemini API. Представляя новую эру контроля и точности, Gemini API предлагает разработчикам мощный инструмент для детального контроля над анимацией виджетов. Это не только открывает новые возможности для творчества, но и повышает качество взаимодействия с пользователем в приложениях Flutter.
Обновления Impeller: механизм рендеринга Impeller получил значительное улучшение, что обещает повышение производительности и более плавную разработку. Это обновление подчеркивает стремление Flutter оптимизировать основные компоненты, которые обеспечивают быстроту реагирования и визуальную привлекательность приложений.
Поддержка Windows Arm64. Стремясь к инклюзивности, Flutter 3.19 расширяет поддержку устройств с Windows Arm64. Этот шаг расширяет возможности приложений Flutter, обеспечивая их плавную интеграцию с более широким спектром платформ и устройств.
Flutter 3.19 представляет множество новых возможностей, призванных расширить возможности разработчиков и повысить производительность их приложений. Одной из выдающихся особенностей этого выпуска является появление Dart SDK для Gemini, революционного усовершенствования, открывающего новые возможности для разработки приложений. С помощью Gemini разработчики получают доступ к мощному набору инструментов и библиотек, которые позволяют им создавать более сложные и быстродействующие приложения, чем когда-либо прежде.
Интеграция искусственного интеллекта с Gemini API
Во Flutter 3.19 интеграция искусственного интеллекта Google с API Gemini знаменует собой важную веху в эволюции разработки приложений. Благодаря бета-версии Google AI Dart SDK у разработчиков появилась возможность наполнить свои приложения Dart и Flutter функциями генеративного искусственного интеллекта, используя передовые возможности новейших моделей искусственного интеллекта Google.
Мы рады объявить о выпуске Google AI Dart SDK для Gemini API. Новый пакет pub.dev google_generative_ai
и вспомогательные ресурсы позволяют вам встраивать генеративные функции на основе искусственного интеллекта в приложения Dart и Flutter посредством идиоматической интеграции Dart с API Gemini. Он открывает двери для широкого спектра возможностей для создания интеллектуальных и производительных приложений для Android, iOS, веб-сайтов, macOS, Windows и Linux из единой базы кода.
С помощью Google AI Dart SDK вы можете:
Легко интегрируйте функции генеративного искусственного интеллекта: добавьте расширенные функции генерации текста, обобщения, чата и многое другое в свои приложения Dart или Flutter с минимальной настройкой.
Воспользуйтесь самой мощной и общей моделью Google: модель Gemini основана на обширных исследованиях и разработках Google в области машинного обучения, предоставляя вам доступ к генеративным возможностям искусственного интеллекта, которые будут продолжать совершенствоваться.
Ускорьте разработку приложений на основе искусственного интеллекта. Сосредоточьтесь на логике вашего приложения и пользовательском опыте, а SDK возьмет на себя тонкости взаимодействия с моделями искусственного интеллекта.
Создавайте кроссплатформенные приложения на базе искусственного интеллекта. С легкостью создавайте генеративные функции искусственного интеллекта для настольных, веб- и мобильных приложений с помощью Flutter.
Используйте Gemini API в более чем 180+ странах и территориях. Проверьте доступные регионы , чтобы получить самый актуальный список стран и регионов, где доступны Gemini API и Google AI Studio (описанные ниже).
Что вы можете построить? Ознакомьтесь с кратким руководством по Dart , чтобы получить подробное пошаговое руководство по настройке.
Безграничные возможности безграничны благодаря Google AI Dart SDK и Gemini API. Погрузитесь в мир разработки приложений на базе искусственного интеллекта и откройте новые возможности для создания интеллектуального и интересного опыта для пользователей по всему миру.
Улучшения платформы
Flutter 3.19 представляет ряд улучшений в платформе, расширяющих возможности разработки и улучшающих функциональность различных виджетов. Давайте углубимся в детали:
Улучшения прокрутки:
Поведение прокрутки Flutter претерпело значительные улучшения. Ранее прокрутка двумя пальцами в два раза быстрее решалась путем настройки значения по умолчанию
ScrollBehavior
с помощьюMultiTouchDragStrategy.latestPointer
. Это обеспечивает единообразную прокрутку независимо от количества используемых пальцев. Дополнительную информацию об этом изменении см. в руководстве по миграции .Внесены исправления ошибок
SingleChildScrollView
и устранены сообщения о сбоях и непредвиденном поведении.ReorderableList
Двумерная прокрутка также была точно настроена, чтобы быстро останавливать прокрутку при перетаскивании или касании во время прокрутки в любом направлении.Виджет
TableView
вtwo_dimensional_scrollables
пакете получил обновления, предлагающие дополнительную доработку, поддержку объединенных ячеек и интеграцию новых функций из 2D-основы, представленных во Flutter 3.16.
Стиль анимации:
AnimationStyle
Представлен новый виджет, любезно предоставленный членом сообщества Flutter @TahaTesser. Этот виджет позволяет разработчикам переопределить поведение анимации по умолчанию в различных виджетах, таких какMaterialApp
,ExpansionTile
иPopupMenuButton
. Разработчики теперь имеют больший контроль над кривыми и продолжительностью анимации.
SegmentedButton.styleFrom Использование:
Член сообщества Flutter @ AcarFurkan представил
styleFrom
статический служебный метод, согласованный с другими типами кнопок. Этот метод упрощает создание, облегчая совместное использование сегментированныхSegmentedButton
кнопокButtonStyle
или настройкуSegmentedButtonTheme
.
Реализация адаптивного переключателя:
Был представлен Adaptive Switch, аналогичный macOS и iOS, а также внешний вид Material Design в других местах. Не полагаясь на библиотеку Купертино, этот адаптивный компонент поддерживает единообразный API на всех платформах.
См. запрос на включение адаптивного переключателя и живой пример на странице API
Switch.adaptive
конструктора .
SemanticsProperties для идентификатора доступности:
Новый идентификатор доступности
SemanticsProperties
обеспечивает важный идентификатор семантического узла в собственной иерархии доступности. Благодаря участнику сообщества @ bartekpacia это изменение затрагивает как движок , так и платформу , улучшая доступность на Android и iOS.
Расширенный доступ к состоянию текстового виджета:
Добавлена поддержка в
MaterialStatesController
иTextField
.TextFormField
Это улучшение позволяет разработчикам прослушивать изменения MaterialState, предлагая более динамичный контроль над состояниями текстовых виджетов.
Улучшения стека истории отмены:
Устранена проблема , из-за которой история отмены/повтора могла исчезнуть на японских клавиатурах. Теперь в запись можно вносить изменения
UndoHistory
до того, как она будет помещена в стек. Это обеспечивает более надежный и настраиваемый процесс отмены/повтора для пользователей.
Эти улучшения инфраструктуры во Flutter 3.19 подчеркивают стремление Flutter предоставить разработчикам мощные инструменты и возможности, позволяющие им с легкостью создавать высококачественные многофункциональные приложения.
Модернизация двигателя
Flutter 3.19 знаменует собой существенные обновления движка, особенно благодаря заметному прогрессу, достигнутому в Impeller, движке рендеринга, лежащем в основе Flutter. Давайте углубимся в ключевые аспекты этих улучшений движка:
Прогресс крыльчатки в Android OpenGL
В предыдущей стабильной версии 3.16 Flutter предложил пользователям изучить Impeller на устройствах Android с поддержкой Vulkan, что охватывает 77% используемых устройств Android. В последующие месяцы серверная часть OpenGL Impeller претерпела значительные улучшения, достигнув функциональности со своим аналогом Vulkan. Примечательно, что была добавлена поддержка MSAA , обеспечивающая правильную визуализацию приложений Flutter практически на всех устройствах Android. Хотя некоторые функции, такие как пользовательские шейдеры и полная поддержка внешних текстур, уже не за горами, разработчикам рекомендуется выполнить обновление до последней стабильной версии и сообщить о любых обнаруженных недостатках. Эта ценная обратная связь имеет решающее значение для того, чтобы сделать Impeller средством рендеринга по умолчанию в следующем выпуске.
Дорожная карта будущего развития
После обеспечения точности рендеринга, в период предварительного просмотра Impeller для Android мы уделяем основное внимание производительности. Мы продолжаем добиваться постепенного прогресса, однако в процессе также находится пара более крупных улучшений. Мы ожидаем, что в работе будут использованы преимущества подпроходов Vulkan , чтобы значительно улучшить производительность расширенных режимов наложения. Кроме того, мы также ожидаем, что изменение стратегии рендеринга от постоянного тесселяции каждого пути ЦП к подходу «трафарет, а затем покрытие» значительно снизит загрузку ЦП Impeller как на Android, так и на iOS. Наконец, мы ожидаем, что новая реализация размытия по Гауссу будет соответствовать пропускной способности реализации Skia и улучшит идиоматическое использование размытия в iOS.
Улучшения API
Информация о глифах
В этом выпуске представлены два новых метода для dart:ui
объекта Paragraph: getClosestGlyphInfoForOffset
и getGlyphInfoAt
, каждый из которых возвращает объект нового типа GlyphInfo. Разработчики могут изучить документацию по новому типу GlyphInfo для получения подробной информации.
Трассировка графического процессора
В Impeller on Metal (iOS, macOS, Simulator) и на устройствах Android с поддержкой Vulkan движок Flutter теперь предоставляет время графического процессора для каждого кадра на временной шкале, доступное в отладке и сборках профиля. Пользователи DevTools могут проверять синхронизацию кадров графического процессора под заголовком «GPUTracer», что обеспечивает улучшенную видимость показателей производительности.
Благодаря этим обновлениям движка Flutter 3.19 гарантирует, что разработчики смогут использовать расширенные возможности рендеринга, улучшенную производительность и расширенные функциональные возможности API для создания еще более привлекательных и эффективных приложений Flutter.
Обратите внимание: поскольку устройства Android, не поддерживающие Vulkan, могут неверно сообщать о своей поддержке запроса синхронизации графического процессора, трассировку графического процессора Impeller можно включить только с помощью флага, установленного в файле AndroidManifest.xml
на этих устройствах.
<метаданные android:name= "io.flutter.embedding.android.EnableOpenGLGPUTracing" android:value= "true" />
Оптимизация производительности
Flutter 3.19 представляет значительные обновления движка, повышая производительность и добавляя новые функции, повышающие качество разработки приложений.
Константы специализации для повышения производительности
Движок Impeller теперь поддерживает константы специализации — функцию, которая существенно уменьшает размер несжатого двоичного файла движка Flutter, повышая общую производительность почти на 350 КБ .
Ускорение фонового фильтра
В этом выпуске заметно улучшена производительность фоновых фильтров и размытия в Impeller. Удалив возможность чтения экранной текстуры, в сценах с несколькими фоновыми фильтрами производительность повышается на 20–70%, в зависимости от сложности. Более того, Impeller больше не сохраняет безоговорочно трафаретный буфер для каждого фонового фильтра, что приводит к значительному улучшению времени обработки кадров графического процессора и времени процессора растровых потоков.
Улучшения 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 с Flutter 3.19, призванные улучшить ваш опыт разработки и оптимизировать рабочие процессы отладки и профилирования. Вот обзор основных улучшений:
Проверка глубоких ссылок на Android:
В DevTools теперь есть новый инструмент и экран, предназначенные для проверки настройки глубоких ссылок на Android. Это обеспечивает плавный и безошибочный процесс интеграции глубоких ссылок, расширяя возможности навигации вашего приложения.
Расширенное отслеживание активности каналов платформы:
Изучите новую опцию в меню «Улучшение отслеживания» , специально разработанную для отслеживания активности каналов платформы. Это дополнение оказывается неоценимым для приложений, использующих плагины, поскольку дает представление о взаимодействии между Flutter и собственным кодом.
Доступность экранов профилирования производительности и ЦП:
Экраны профилирования производительности и ЦП теперь доступны даже при отсутствии подключенного приложения. Ранее сохраненные данные о производительности или профили ЦП можно перезагрузить и просмотреть непосредственно с этих экранов, что обеспечивает гибкость при анализе производительности приложений.
Улучшения боковой панели Flutter в VS Code:
Боковая панель Flutter в Visual Studio Code (VS Code) была улучшена. Теперь он позволяет вам включать новые платформы, если они не включены для текущего проекта. Кроме того, меню DevTools на боковой панели предлагает удобную возможность открыть DevTools во внешнем окне браузера, обеспечивая бесшовную и настраиваемую среду разработки.
Чтобы узнать больше, ознакомьтесь с примечаниями к выпуску DevTools, 2.29.0 , 2.30.0 и 2.31.0 .
Разработка настольных компьютеров
Поддержка Windows Arm64
Flutter для Windows теперь поддерживает начальную поддержку архитектуры Arm64 благодаря похвальным усилиям члена сообщества @pbo-linaro. Эта первоначальная поддержка открывает путь к более эффективным и производительным приложениям Flutter, которые изначально работают на устройствах Windows Arm64. Хотя этот шаг все еще находится в разработке, и прогресс отслеживается по проблеме GitHub #62597 , он означает многообещающее улучшение для разработчиков Flutter, стремящихся оптимизировать свои приложения для более широкого круга устройств Windows.
Благодаря поддержке Windows Arm64 разработчики Flutter получают доступ к более широкой аудитории и могут оптимизировать свои приложения для более широкого круга устройств Windows. Этот шаг не только повышает универсальность Flutter, но и открывает захватывающие возможности для инноваций и роста в сфере разработки настольных компьютеров.
Экосистемный прогресс
Манифест конфиденциальности обязательной причины
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 и результаты виртуального саммита Package Ecosystem, а также поделимся некоторыми заметными обновлениями и информацией, которую нужно знать.
Если вы пропустили это, ознакомьтесь с январской публикацией в блоге о развитии экосистемы пакетов Flutter и Dart .
Устаревшие версии и критические изменения
В неустанном стремлении к прогрессу Flutter 3.19 вводит некоторые важные изменения и кардинальные изменения, направленные на направление разработки в сторону более безопасных, оптимизированных и многофункциональных сред. Вот что вам нужно знать:
Прекращение поддержки Windows 7 и 8:
В рамках развития Flutter мы адаптируемся к новейшим технологиям, прекращая поддержку Windows 7 и 8 в выпусках Dart 3.3 и Flutter 3.19. Этот стратегический сдвиг, гармонирующий с подходом Microsoft, позволяет нам сосредоточиться на улучшении Flutter для современных операционных систем. Мы понимаем, какие изменения могут потребоваться от наших разработчиков, и готовы помочь вам в этом переходе. Этот шаг закладывает основу для более безопасной, эффективной и многофункциональной среды разработки в поддерживаемых версиях Windows. Мы ценим ваше понимание и адаптируемость, поскольку мы коллективно внедряем инновации в экосистеме Flutter.
Устаревание флага размывания рабочего колеса:
Устаревание iOS 11:
Flutter прощается с поддержкой iOS 11 из-за сбоя во время выполнения , вызванного некоторыми сетевыми API. Следовательно, приложения, созданные на основе Flutter 3.16.6 и более поздних версий, не будут совместимы с устройствами под управлением iOS 11. Мы ценим вашу гибкость, поскольку мы вносим эти изменения, чтобы обеспечить более стабильную и надежную среду разработки.
Подробности об устаревшем режиме автоматического рендеринга:
В этом выпуске представлены критические изменения , в том числе прекращение поддержки API, срок действия которых истек после выпуска версии 3.16. Обратитесь к руководству по прекращению поддержки для этого выпуска, чтобы определить все затронутые API, а также дополнительные инструкции по контексту и миграции. Исправление Flutter в сочетании с быстрыми исправлениями в IDE поддерживает многие из этих устаревших версий. Массовые исправления можно эффективно реализовать с помощью
dart fix
инструмента командной строки. Как всегда, мы сердечно благодарим сообщество за участие в тестировании и помощь в выявлении и устранении критических изменений. Кроме того, обратите внимание, что этот выпуск знаменует собой включение пакетаflutter_driver
в политику прекращения поддержки, пополнив ряды уже поддерживаемых пакетов, таких какflutter
иflutter_test
.
Воспримите эти изменения как ступеньки на пути к более надежной и перспективной экосистеме Flutter. Ваше сотрудничество и понимание играют жизненно важную роль в обеспечении плавного перехода к будущему разработки приложений с Flutter.
Заключение
Поскольку мы подчеркнули значительное количество участников в начале этого объявления, мы сделали это целенаправленно. Эволюция Flutter в мощный и эффективный инструментарий, которым он стал, является прямым свидетельством самоотверженности и упорной работы нашего невероятного сообщества. Сердечное спасибо каждому из вас.
Чтобы углубиться в особенности того, чего удалось достичь в этом выпуске, мы приглашаем вас просмотреть примечания к выпуску и журнал изменений , чтобы получить полный список дополнений во Flutter 3.19.
Flutter 3.19, наряду с Dart 3.3 , теперь доступен в стабильной версии. Отправиться в это новейшее путешествие с Flutter так же просто, как запустить обновление Flutter.