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, поэтому хотелось бы выразить благодарность следующим участникам:
Без широкой команды участников сообщества нам было бы невозможно выпускать новые версии Flutter, поэтому огромное спасибо всем!Каждый новый выпуск Flutter приносит больше мотивации к использованию. На самом деле, в апреле было сообщено, что количество приложений Flutter в Google Play Store достигло 50 000, с ежемесячным пиком новых приложений в 10 000. Спустя всего три месяца в Google Play уже насчитывается более 90 000
приложений на Flutter, причём значительную часть этого роста мы наблюдаем в Индии, которая стала крупнейшей зоной присутствия Flutter-разработчиков. Количество разработчиков удвоилось за последние шесть месяцев, что совпадает с увеличением инвестиций со стороны Google в эту страну. Наконец, Flutter невозможен без Dart, поэтому приятно видеть, как язык Dart, согласно отчету IEEE, поднялся на четыре позиции по сравнению с прошлым годом и занял 12 место среди первых 50 языков, отслеживаемых организацией.
Тряска дерева шрифтов значков удаляет неиспользуемые в приложении значки, что позволяет уменьшить его размер. При использовании этого механизма в приложении Flutter Gallery мы заметили, что это позволило уменьшить размер приложения на 100 КБ. Теперь при выполнении сборки версий для выпуска этот процесс происходит по умолчанию для мобильных приложений, но пока ограничивается только TrueType
шрифтами, хотя в будущих версиях эта ограничение будет снято.
Еще одним улучшением производительности, которое было сделано в данном выпуске, является использование этапа предварительной загрузки для уменьшения зубчатости при первоначальном отображении анимации, где можно видеть улучшенный пример этой анимации (скорость снижена до половины).
Если Flutter-приложение демонстрирует нестабильность анимации во время первого запуска, то шейдеры на языке Skia Shading Language предоставляют возможность предварительной компиляции во время этапа сборки приложения, что позволяет увеличить скорость работы более чем в два раза. Чтобы воспользоваться этим продвинутым функционалом, обратитесь к странице предварительной загрузки SkSL на сайте flutter.dev.Наконец, когда мы работаем над оптимизацией для рабочего стола, мы продолжаем совершенствовать поддержку мыши. В данном выпуске мы重构了鼠标点击测试系统, чтобы предоставить множество архитектурных преимуществ, которые были заблокированы из-за проблем производительности. Это позволило нам повысить производительность на основе сетевых микробенчмарков до
15
раз!
Это означает, что разработчики будут получать лучшие, более согласованные и более точные результаты тестирования нажатий кнопок, не жертвуя при этом производительностью: двойной выигрыш!
Перевод части текста:
В данном выпуске мы重构了鼠标点击测试系统, чтобы предоставить множество архитектурных преимуществ, которые были заблокированы из-за проблем производительности.
Здесь исправлено:
Полный текст с исправлениями:
Наконец, когда мы работаем над оптимизацией для рабочего стола, мы продолжаем совершенствовать поддержку мыши. В данном выпуске мы перестроили систему тестирования нажатий кнопок мыши, чтобы предоставить множество архитектурных преимуществ, которые были заблокированы из-за проблем производительности. Это позволило нам повысить производительность на основе сетевых микробенчмарков до 15
раз!
Это означает, что разработчики будут получать лучшие, более согласованные и более точные результаты тестирования нажатий кнопок, не жертвуя при этом производительностью: двойной выигрыш!С помощью самой эффективной, быстрой и мощной системы тестирования кликов мыши мы расширяем поддержку указателя мыши, который является одной из самых популярных функций для рабочего стола. По умолчанию несколько часто используемых виджетов будут отображать указатель мыши, таким образом, как этого ожидают разработчики, либо разработчики могут выбрать другой указатель из списка поддерживаемых указателей.
Этот вариант Flutter основан на версии Dart 2.9 и включает новый базирующийся на состоянии декодер UTF-8, который использует оптимизированные примитивы декодирования, улучшенные в Dart VM с использованием команд SIMD. UTF-8 — это самый распространённый метод кодировки символов в интернете, поэтому способность быстро декодировать большие сетевые ответы является критически важной. В наших тестах по декодированию UTF-8 мы обнаружили, что на низкобюджетных устройствах ARM с испытательными английскими текстами общее улучшение составило около 200%, а с китайскими текстами — до 400%.
Кроме того, приятно отметить, что мы также начали внедрять эту функцию для веб-приложений.
В этом выпуске представлен новый компонент InteractiveViewer
. Этот InteractiveViewer
предназначен для реализации типичных моделей взаимодействия с приложением, таких как: панорамирование, масштабирование и перемещение N объектов даже при изменении размера, аналогично тому, как это сделано в простой шахматной доске.
Для просмотра примера интеграции InteractiveViewer
в своё приложение обратитесь к документации API, где вы можете использовать его в DartPad. Кроме того, если вас интересует методология дизайна и разработки InteractiveViewer
, вы можете просмотреть видео на канале Chicago Flutter на YouTube.Если вас интересует добавление новых видов взаимодействия в Flutter-приложение, поддерживающее InteractiveViewer
, то вы также будете рады узнать, что мы добавили еще больше возможностей для перемещения "n". В частности, если вам требуется знать точно место, куда был помещён объект (что всегда возможно для самого объекта Draggable), теперь можно использовать метод onAcceptDetails
класса DragTarget
для получения этой информации.
Просмотрите этот образец для получения более подробной информации и ждите следующих версий, которые будут предоставлять эту информацию во время перемещения, чтобы DragTarget
мог легко обновлять визуализацию во время действия перемещения.
Кроме нового компонента, данный выпуск также включает множество обновлённых компонентов, в том числе Slider
и RangeSlider
. Для получения дополнительной информации обратитесь к новым функциям компонента Slider
.
DatePicker
был обновлен, включая новый компактный дизайн и поддержку диапазона дат.
Наконец, TimePicker
имеет совершенно новый стиль.
Если вы хотите использовать его, вот интересное веб-приложение, построенное с помощью Flutter: Flutter-построенный интересный веб-демо.### Ответственный за страницу лицензий
Обновление этой версии также включает новую откликающуюся страницу лицензий: AboutDialog
.
Пулл запрос 57588 от участника сообщества TonicArtos не только обновил её в соответствии с правилами Material Design, сделав её очень элегантной, но и более удобной для навигации, а также предназначенной для использования на планшетах и компьютерах, а также на мобильных устройствах. Благодарим TonicArtos! Поскольку каждый Flutter приложение должен показывать лицензии используемых им пакетов, это делает каждое Flutter приложение лучше.
Конечно, 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
clipBehavior
к виджетам с clipRect
child
для управления наложением слайверов в NestedScrollView
Надеемся, что вы также рады этому выпуску, который является крупнейшим за всю историю Flutter с точки зрения многих аспектов. С повышением производительности, новыми и обновленными компонентами, а также улучшенными инструментами, мы можем лишь становиться лучше. Мы благодарим сообщество за увеличивающееся число участников, делающих каждый выпуск Flutter больше, быстрее и мощнее, чем предыдущий. Включены новые возможности, такие как поддержка пустой безопасности, новые версии плагинов Ads
, Maps
и WebView
, а также продолжение работы над улучшением инструментов.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )