1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/CarGuo-GSYFlutterBook

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Flutter-120.md 31 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 10.03.2025 00:06 5767d61

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

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

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

  • Поддержка autofill;
  • Новый способ слоящегося Widget, поддерживающего перемещение и масштабирование;
  • Новая поддержка курсора мыши;
  • Обновление старых версий Material Widgets (например, выбор времени и даты) и новый отзывчивый лицензионный экран для коробочных приложений на desktop и мобильных устройствах.

Чтобы продолжить повышение эффективности работы с Flutter, было обновлено расширение Flutter для Visual Studio Code, которое теперь встраивает Dart DevTools непосредственно в среду разработки, автоматически обновляет импорты при перемещении файлов и предлагает новое множество метаданных для создания своих инструментов.Благодаря открытости Flutter и замечательному сообществу, эта стабильная версия включает 3,029 объединённых запросов на слияние (PR) от 359 различных участников со всего мира и 5,485 закрытых проблем, среди которых 270 PR от участников сообщества Flutter.

На самом деле, это самый большой вклад сообщества во все выпуски Flutter, поэтому хотелось бы выразить благодарность следующим участникам:

  • CareF за 28 PR;
  • AyushBherwani1998 за 26 PR (включая 10 примеров Flutter как часть проекта Google Summer of Code);
  • a14n за 13 PR (многие из которых связаны с внедрением null-safety в Flutter).

Без широкой команды участников сообщества нам было бы невозможно выпускать новые версии Flutter, поэтому огромное спасибо всем!Каждый новый выпуск Flutter приносит больше мотивации к использованию. На самом деле, в апреле было сообщено, что количество приложений Flutter в Google Play Store достигло 50 000, с ежемесячным пиком новых приложений в 10 000. Спустя всего три месяца в Google Play уже насчитывается более 90 000 приложений на Flutter, причём значительную часть этого роста мы наблюдаем в Индии, которая стала крупнейшей зоной присутствия Flutter-разработчиков. Количество разработчиков удвоилось за последние шесть месяцев, что совпадает с увеличением инвестиций со стороны Google в эту страну. Наконец, Flutter невозможен без Dart, поэтому приятно видеть, как язык Dart, согласно отчету IEEE, поднялся на четыре позиции по сравнению с прошлым годом и занял 12 место среди первых 50 языков, отслеживаемых организацией.

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

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

Еще одним улучшением производительности, которое было сделано в данном выпуске, является использование этапа предварительной загрузки для уменьшения зубчатости при первоначальном отображении анимации, где можно видеть улучшенный пример этой анимации (скорость снижена до половины).

Анимация без и со SkSL предварительной загрузкойЕсли Flutter-приложение демонстрирует нестабильность анимации во время первого запуска, то шейдеры на языке Skia Shading Language предоставляют возможность предварительной компиляции во время этапа сборки приложения, что позволяет увеличить скорость работы более чем в два раза. Чтобы воспользоваться этим продвинутым функционалом, обратитесь к странице предварительной загрузки SkSL на сайте flutter.dev.Наконец, когда мы работаем над оптимизацией для рабочего стола, мы продолжаем совершенствовать поддержку мыши. В данном выпуске мы重构了鼠标点击测试系统, чтобы предоставить множество архитектурных преимуществ, которые были заблокированы из-за проблем производительности. Это позволило нам повысить производительность на основе сетевых микробенчмарков до 15 раз!

Это означает, что разработчики будут получать лучшие, более согласованные и более точные результаты тестирования нажатий кнопок, не жертвуя при этом производительностью: двойной выигрыш!

Перевод части текста:

В данном выпуске мы重构了鼠标点击测试系统, чтобы предоставить множество архитектурных преимуществ, которые были заблокированы из-за проблем производительности.

Здесь исправлено:

  • "重构了鼠标点击测试系统" -> "перестроили систему тестирования нажатий кнопок мыши"
  • "提供了由于性能问题而被阻止的许多架构优势" -> "предоставить множество архитектурных преимуществ, которые были заблокированы из-за проблем производительности"

Полный текст с исправлениями:

Наконец, когда мы работаем над оптимизацией для рабочего стола, мы продолжаем совершенствовать поддержку мыши. В данном выпуске мы перестроили систему тестирования нажатий кнопок мыши, чтобы предоставить множество архитектурных преимуществ, которые были заблокированы из-за проблем производительности. Это позволило нам повысить производительность на основе сетевых микробенчмарков до 15 раз!

Это означает, что разработчики будут получать лучшие, более согласованные и более точные результаты тестирования нажатий кнопок, не жертвуя при этом производительностью: двойной выигрыш!С помощью самой эффективной, быстрой и мощной системы тестирования кликов мыши мы расширяем поддержку указателя мыши, который является одной из самых популярных функций для рабочего стола. По умолчанию несколько часто используемых виджетов будут отображать указатель мыши, таким образом, как этого ожидают разработчики, либо разработчики могут выбрать другой указатель из списка поддерживаемых указателей. Новый указатель мыши на существующих виджетах Android Этот вариант Flutter основан на версии Dart 2.9 и включает новый базирующийся на состоянии декодер UTF-8, который использует оптимизированные примитивы декодирования, улучшенные в Dart VM с использованием команд SIMD. UTF-8 — это самый распространённый метод кодировки символов в интернете, поэтому способность быстро декодировать большие сетевые ответы является критически важной. В наших тестах по декодированию UTF-8 мы обнаружили, что на низкобюджетных устройствах ARM с испытательными английскими текстами общее улучшение составило около 200%, а с китайскими текстами — до 400%.

Автоматическое заполнение полей ввода текстаОдним из самых популярных среди пользователей функционалов является поддержка автоматического заполнения текстовых полей в приложениях Flutter для Android и iOS. Благодаря PR 52126 мы рады сообщить, что долгожданное время ожидания закончилось: больше нет необходимости заставлять пользователя повторно вводить данные, поскольку операционная система уже собрала эти данные.

Автоматическое заполнение

Кроме того, приятно отметить, что мы также начали внедрять эту функцию для веб-приложений.

Новый компонент для распространённых моделей взаимодействия

В этом выпуске представлен новый компонент InteractiveViewer. Этот InteractiveViewer предназначен для реализации типичных моделей взаимодействия с приложением, таких как: панорамирование, масштабирование и перемещение N объектов даже при изменении размера, аналогично тому, как это сделано в простой шахматной доске.

Для просмотра примера интеграции InteractiveViewer в своё приложение обратитесь к документации API, где вы можете использовать его в DartPad. Кроме того, если вас интересует методология дизайна и разработки InteractiveViewer, вы можете просмотреть видео на канале Chicago Flutter на YouTube.Если вас интересует добавление новых видов взаимодействия в Flutter-приложение, поддерживающее InteractiveViewer, то вы также будете рады узнать, что мы добавили еще больше возможностей для перемещения "n". В частности, если вам требуется знать точно место, куда был помещён объект (что всегда возможно для самого объекта Draggable), теперь можно использовать метод onAcceptDetails класса DragTarget для получения этой информации.

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

Обновлены Material Slider, RangeSlider, TimePicker и DatePicker

Кроме нового компонента, данный выпуск также включает множество обновлённых компонентов, в том числе Slider и RangeSlider. Для получения дополнительной информации обратитесь к новым функциям компонента Slider.

DatePicker был обновлен, включая новый компактный дизайн и поддержку диапазона дат.

Наконец, TimePicker имеет совершенно новый стиль.

Если вы хотите использовать его, вот интересное веб-приложение, построенное с помощью Flutter: Flutter-построенный интересный веб-демо.### Ответственный за страницу лицензий

Обновление этой версии также включает новую откликающуюся страницу лицензий: AboutDialog.

Пулл запрос 57588 от участника сообщества TonicArtos не только обновил её в соответствии с правилами Material Design, сделав её очень элегантной, но и более удобной для навигации, а также предназначенной для использования на планшетах и компьютерах, а также на мобильных устройствах. Благодарим TonicArtos! Поскольку каждый Flutter приложение должен показывать лицензии используемых им пакетов, это делает каждое Flutter приложение лучше.

Новый формат pubspec.yaml требуется для выпуска плагинов

Конечно, Flutter не только контроллеры, но и инструменты, эта версия включает много обновлений, но вот некоторые ключевые моменты.

Первым делом, важное объявление: если вы автор плагина Flutter, старый формат pubspec.yaml, используемый для выпуска плагинов, больше не поддерживается. При попытке выполнить pub publish вы получите следующее сообщение об ошибке:

Старый формат не позволяет указывать платформы, поддерживаемые плагином, и был отключен с Flutter 1.12. Теперь выпуск новых или обновленных плагинов требует нового формата pubspec.yaml.Для клиентов плагинов эти инструменты всё ещё поддерживают старый формат pubspec, и все существующие плагины, выпущенные с использованием старого формата, продолжат работать с Flutter приложениями на сайте pub.dev в течение некоторого времени.## Предварительный просмотр Dart DevTools в Visual Studio Code

Наиболее значительное обновление инструментов в этой версии — расширение Visual Studio Code, которое предоставляет возможность предварительного просмотра новых функционалов, позволяющих разработчику прямым образом встраивать экраны Dart DevTools в рабочую область кодирования.

Активируйте эту функцию с помощью нового параметра dart.previewEmbeddedDevTools. На скриншоте выше показана встроенная в Visual Studio Code инспекция виджетов Flutter. Включив этот новый параметр, вы можете выбрать встроенные закладки через меню Dart DevTools в области состояния. Это меню позволяет вам выбирать страницы, которые вы хотите отображать.

Эта функция находится в режиме предварительной версии, поэтому если у вас возникли какие-либо проблемы, пожалуйста, сообщите нам. (https://github.com/Dart-Code/Dart-Code/issues)

Обновление сетевого трекинга

Последняя версия Dart DevTools включает обновленную версию "сетевой" страницы, которая активирует анализ web-сокетов.

Сейчас "сетевая" страница добавляет информацию о времени выполнения и другие данные, такие как ваш статус и тип содержимого, в сетевые вызовы приложения. Были сделаны другие улучшения в интерфейсе подробностей, чтобы предоставлять сводку данных в запросах WebSocket или HTTP. Мы также планируем добавить больше возможностей для этой страницы, включая тела запросов/ответов HTTP и мониторинг потока gRPC.## Автоматическое обновление импортных заявлений при переименовании файла

Ещё одним новым функционалом Visual Studio Code является автоматическое обновление импортных заявлений при переименовании файла. Когда файл перемещается или переименовывается, он автоматически обновляет импортные заявления.

Эта функция доступна только для одного файла и пока не работает для нескольких файлов или директорий, но она будет скоро реализована.

Метаданные для каждого построителя инструмента

Ещё одно важное обновление предназначено для людей, создающих Flutter инструменты. Мы создали новый проект на GitHub для захвата и публикации метаданных относительно самого Flutter фреймворка. Он предоставляет машинно-читаемые данные следующих файлов:

Это то же самое, что мы используем для наших собственных расширений для Android Studio / IntelliJ и VS Code; мы полагаем, что это может быть полезно при создании ваших собственных инструментов. В частности, эти метаданные позволяют IDE серии IntelliJ отображать цвета, использованные в Flutter коде:Связанным с этим новым функционалом в IntelliJ IDEA и Android Studio является отображение цветовых панелей для Color.fromARGB() и Color.fromRGBO():

Особую благодарность выразили участнику GitHub dratushnyy за его вклад в реализацию цветового предварительного просмотра в IntelliJ IDEA!

Безопасные платформенные каналы для взаимодействия с платформой

Ответом на общие запросы плагин-авторов, полученные в ходе пользовательского опроса, стало стремление сделать взаимодействие Flutter с хостовой платформой более безопасным и удобным как для плагинов, так и для добавлений в приложения. Для удовлетворения этих потребностей был создан командный инструмент Pigeon, который генерирует типобезопасный код для передачи сообщений поверх платформенных каналов, используя синтаксис Dart, без необходимости добавления дополнительных зависимостей выполнения.

Используя Pigeon, можно вызывать методы классов Java / Objective-C / Kotlin / Swift и передавать объекты данных, отличные от примитивных, прямо из вызова методов Dart, без необходимости ручной синхронизации строк методов и сериализации аргументов через платформенные каналы.

Хотя Pigeon все ещё находится в стадии предварительной версии, он достаточно зрелый, чтобы использовать его в плагине video_player. Если вы хотите протестировать Pigeon для своих нужд, обратитесь к обновленной документации по платформенным каналам и примерному проекту в этом репозитории.## Невозможно перечислить все обновления инструментов

Количество значительных изменений в инструментах во время выпуска Flutter 1.20 слишком велико, чтобы перечислить их здесь. Однако вам может быть полезно самостоятельно просмотреть объявления об обновлениях:

Основные изменения

Как всегда, мы стремимся снизить количество значительных изменений. Ниже приведён список изменений в версии Flutter 1.20.- #55336 Добавление tabSemanticsLabel к CupertinoLocalizationsруководство по миграции PR

  • #55977 Добавление clipBehavior к виджетам с clipRect
  • #55998 Устранение проблем с падением навигатора при обновлении страниц, когда маршрут всё ещё существует.
  • #56582 Обновление семантики вкладок в Cupertino так, чтобы она была такой же как в Material
  • #57065 Удаление устаревшего параметра child для управления наложением слайверов в NestedScrollView
  • #58392 Индикатор активности во время перетаскивания на iOS## Краткое содержание

Надеемся, что вы также рады этому выпуску, который является крупнейшим за всю историю Flutter с точки зрения многих аспектов. С повышением производительности, новыми и обновленными компонентами, а также улучшенными инструментами, мы можем лишь становиться лучше. Мы благодарим сообщество за увеличивающееся число участников, делающих каждый выпуск Flutter больше, быстрее и мощнее, чем предыдущий. Включены новые возможности, такие как поддержка пустой безопасности, новые версии плагинов Ads, Maps и WebView, а также продолжение работы над улучшением инструментов.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/CarGuo-GSYFlutterBook.git
git@api.gitlife.ru:oschina-mirror/CarGuo-GSYFlutterBook.git
oschina-mirror
CarGuo-GSYFlutterBook
CarGuo-GSYFlutterBook
master