Pull to refresh

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

Level of difficultyMedium
Reading time14 min
Views3.6K
Original author: @sahaj.blup

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 является обновление SDK для языка Dart, подготовленное для проекта Gemini – прорывного шага, открывающего новые возможности в разработке приложений. С помощью Gemini разработчики получают доступ к мощному набору инструментов и библиотек, позволяющих создавать гораздо более сложные и отзывчивые приложения, чем когда-либо прежде.

Интеграция искусственного интеллекта с Gemini API

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

Анонс

Мы рады объявить о запуске Google AI Dart SDK для Gemini API. Новый пакет на pub.dev – google_generative_ai, а также сопутствующие ресурсы позволяют вам встраивать функции на основе генеративного ИИ в ваши приложения Dart и Flutter, используя идиоматическую интеграцию Dart с Gemini API. Это открывает двери к широкому спектру возможностей для создания интеллектуальных, производительных приложений для Android, iOS, Интернета, macOS, Windows и Linux из единой кодовой базы.

Что дает Google AI Dart SDK:

  • Легкая интеграция функций генеративного ИИ: добавляйте в свои приложения Dart или Flutter расширенные возможности генерации текста, суммирования, чата и многое другое с минимальной настройкой.

  • Использование самой мощной и универсальной модели Google: модель Gemini опирается на обширные исследования и разработки Google в области машинного обучения, предоставляя вам доступ к возможностям генеративного ИИ, которые будут продолжать совершенствоваться.

  • Ускорение разработки приложений на основе ИИ: сосредоточьтесь на логике своего приложения и пользовательском опыте, а SDK позаботится о тонкостях взаимодействия с моделями ИИ.

  • Создание кроссплатформенных приложений на основе ИИ: легко создавайте функции генеративного ИИ для настольных, веб- и мобильных приложений с помощью Flutter.

  • Доступность Gemini API: Используйте 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 . Этот виджет позволяет разработчикам переопределить поведение анимации по умолчанию в различных виджетах, таких как MaterialAppExpansionTileи PopupMenuButton. Разработчики теперь имеют больший контроль над кривыми и продолжительностью анимации.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Прогресс Impeller ("крыльчатки") в Android OpenGL

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

Дорожная карта будущего развития

После обеспечения точности рендеринга, в период предварительного просмотра Impeller для Android мы уделяем основное внимание производительности. Мы продолжаем добиваться постепенного прогресса, однако в процессе также находится пара более крупных улучшений. Мы ожидаем, что в работе будут использованы преимущества подпроходов Vulkan , чтобы значительно улучшить производительность расширенных режимов наложения. Кроме того, мы также ожидаем, что изменение стратегии рендеринга на Stencil-then-cover  значительно снизит загрузку ЦП 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на этих устройствах.

<meta-data 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, но и открывает захватывающие возможности для инноваций и роста в сфере десктопной разработки.

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

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

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 3.19.

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

Tags:
Hubs:
Total votes 13: ↑5 and ↓8+1
Comments9

Articles