Субтитры: улучшения производительности, мобильное автозаполнение, новый виджет и многое другое.
Оригинальный адрес:medium.com/flutter/buttons…
Оригинальный автор:medium.com/@C продает_180…
Опубликовано: 5 августа 2020 г. - 11 мин. чтения
Наше постоянное видение Flutter — предоставить портативный набор инструментов для создания потрясающих приложений, где вы можете рисовать пиксели на экране, где бы вы ни находились. С каждым выпуском мы продолжаем усердно работать над тем, чтобы Flutter был быстрым, красивым, эффективным и открытым для каждой платформы, которую мы поддерживаем. Во Flutter 1.20, выпущенном сегодня для нашего стабильного канала, Flutter имеет улучшения для каждого из этих четырех столпов.
существуетбыстроВ этой категории у нас есть несколько улучшений производительности на самом низком уровне механизма рендеринга и самого языка Dart.
Чтобы вы могли строить все больше и большесимпатичныйПриложение Flutter, этот выпуск имеет несколько улучшений пользовательского интерфейса, включая долгожданную поддержку автозаполнения, новый способ наложения ваших виджетов для поддержки панорамирования и масштабирования, новую поддержку курсора мыши, поддержку старых обновлений для любимых виджетов материалов, таких как средства выбора времени и даты, и совершенно новая адаптивная страница лицензирования для окна «О программе» в настольных и мобильных приложениях Flutter форм-фактора.
Чтобы вы продолжали быть более продуктивными, мыРасширение Flutter для Visual Studio CodeОбновлено для переноса Dart DevTools непосредственно в вашу IDE, автоматического обновления операторов импорта при перемещении файлов и предоставления нового набора метаданных для создания собственных инструментов.
И это из-за ФлаттераоткрытостьИ удивительное сообщество участников, этот выпуск содержит 3029 объединенных PR и 5485 закрытых вопросов от 359 участников со всего мира, включая 270 участников из более широкого сообщества Flutter. На самом деле, это самое большое количество участников, которые когда-либо участвовали в выпуске Flutter. Особая благодарность участникам сообществаCareFиз 28 сбн,AyushBherwani199826 PR, в том числе 10 вкладов в образцы Flutter в рамках его проекта Google Summer of Code, иa14n13 PR, многие из которых посвящены безопасности посадки Flutter (скоро будет больше тем!). Мы не смогли бы создать Flutter без огромной команды участников сообщества, так что спасибо!
Каждая новая версия Flutter увеличивает использование и скорость. На самом деле в апрелемы сообщаем, что, количество приложений Flutter в Google Play Store достигло 50 000, а пиковая скорость — 10 000 новых приложений в месяц. Сейчас, чуть более трех месяцев спустя, в Google Play более 90 000 приложений Flutter. Мы наблюдаем значительный рост в Индии, которая в настоящее время является регионом номер один для разработчиков Flutter, удвоившись за последние шесть месяцев, что соответствуетGoogle наращивает инвестиции в регионОчень последовательно. Наконец, Flutter не Flutter без Dart, так что приятно видетьIEEE сообщает, что Dart поднялся на 4 позиции с прошлого года и занял 12-е место в 50 лучших языках, которые они отслеживают..
Улучшения производительности для Flutter и Dart
В команде Flutter мы всегда ищем новые способы уменьшить размер и задержку вашего приложения. В качестве примера первого, эта версия исправляетПроблемы производительности инструмента с сокращением шрифта значка, и сделатьСокращение шрифтов становится поведением по умолчанию при создании не-веб-приложений.. Обрезка шрифта значка удаляет неиспользуемые значки в вашем приложении, уменьшая размер. Используя эту функцию для приложения Flutter Gallery, мы обнаружили, чтоУменьшен размер приложения на 100 КБ.. Теперь, когда вы делаете выпускную сборку, у вас есть такое поведение по умолчанию в вашем мобильном приложении. В настоящее время он ограничен шрифтами TrueType, но это ограничение будет снято в будущем выпуске. Еще одно улучшение производительности, которое мы сделали в этом выпуске, — это использование фазы прогрева для уменьшения дрожания при начальном отображении анимации. Вы можете увидеть пример улучшенного джиттера в этой анимации (замедление до половинной скорости).
Анимация без прогрева SkSL и с прогревом SkSL
Если приложение Flutter имеет заикание анимации при первом запуске, шейдеры Skia Shading Language обеспечивают предварительную компиляцию как часть сборки вашего приложения, что может ускорить работу более чем в 2 раза. Если вы хотите воспользоваться этой расширенной функцией, см. flutter.devСтраница разогрева SkSL.
Наконец, пока мы оптимизируем форм-фактор настольного компьютера, мы продолжаем улучшать поддержку мыши. В этом релизе мы провели рефакторингсистема тестирования ударов мышью, который предоставляет множество архитектурных преимуществ, которым препятствуют проблемы с производительностью. Рефакторинг повысил нашу производительность в веб-микробенчмарках до 15 раз!Это означает, что вы можете получать более качественные, последовательные и точные результаты тестов без ущерба для производительности: беспроигрышный вариант!
Благодаря этому лучшему, более быстрому и сильному тесту нажатия мыши мы добавили поддержку курсоров мыши — также одну из самых популярных функций рабочего стола. Некоторые часто используемые виджеты будут отображать курсор, который вы ожидаете по умолчанию, или вы можете указать другой из списка поддерживаемых курсоров.
Добавляет новый указатель мыши на существующий виджет на Android.
Эта версия Flutter построена на Dart версии 2.9. Он оснащен новым двухпроходным декодером UTF-8 на основе состояния с примитивами декодирования, оптимизированными для виртуальной машины Dart, частично использующими SIMD-инструкции. UTF-8 в настоящее время является наиболее широко используемым методом кодирования символов в Интернете, и возможность быстрого декодирования имеет решающее значение при получении больших сетевых ответов. В наших тестах декодирования UTF-8 мы увидели улучшения по всем направлениям: от почти 200% для английского текста до 400% для китайского текста на недорогих устройствах ARM.
Автозаполнение мобильных текстовых полей
В течение некоторого времени одной из наиболее востребованных функций Flutter является поддержка базовой поддержки Android и iOS для автозаполнения текста в программах Flutter. вместе сPR 52126, мы рады сообщить, что ожидание закончилось — больше не нужно просить ваших пользователей повторно вводить данные, которые ОС уже собрала для них.
действие автозаполнения
Вы будете рады узнать, что мы начали добавлять эту функцию в сеть.
Новый виджет для общих шаблонов взаимодействия
В этом выпуске представлен новый виджет --InteractiveViewer
, который предназначен для создания общих интерактивных функций в вашем приложении, таких как панорамирование, масштабирование и перетаскивание, даже при изменении размера.InteractiveViewer
Разработанный для создания общих интерактивных функций в вашем приложении, таких как панорамирование, масштабирование, перетаскивание и даже изменение размера, этотПример простой доски для годемонстрирует это.
Используйте интерактивное средство просмотра для масштабирования, панорамирования, изменения размера, перетаскивания и т. д.
знать, какInteractiveViewer
интегрируется в ваше собственное приложение,Пожалуйста, ознакомьтесь с документацией по API, где вы можете играть в нее в DartPad. Кроме того, если вы хотите знатьInteractiveViewer
спроектирован и разработан таким образом, чтобы вы моглиСмотрите демо автора для Chicago Flutter на YouTube.
Если вы заинтересованы в присоединении к вашей заявке трепетаниеInteractiveViewer
какая интерактивность была достигнута, то вы также можете быть рады услышать, что у нас естьДобавлено больше функций перетаскивания. В частности, если вы хотите узнать точное место перетаскивания целевого виджета (это всегдаDraggableсам объект доступен), теперь можно пройтиDragTarget onAcceptDetailsметод получения этой информации.
Новая цель перетаскивания принимает подробные действия
Проверитьэтот примердля получения подробной информации и ожидайте, что будущие выпуски будут предоставлять эту информацию также во время перетаскивания, чтобы DragTarget мог более легко предоставлять визуальные обновления во время операций перетаскивания.
Обновлен ползунок материала, ползунок диапазона, средство выбора времени и средство выбора даты.
В дополнение к новым виджетам, этот выпуск также включает в себя несколько обновленных виджетов,в соответствии с последними рекомендациями по материалам. которая включает в себяSlider
а такжеRangeSlider
. Для получения дополнительной информации см.Новые возможности виджета Slider.
Обновлен слайдер материалов.
Обновить ползунок диапазона материалов
DatePicker
Обновлен с новым компактным дизайном и поддержкой диапазонов дат.
Обновленный DatePicker
наконец,TimePicker
С совершенно новым стилем.
Обновленный TimePicker
Если вы хотите играть, вотИнтересная веб-демонстрация, созданная с помощью Flutter.
Адаптивная страница лицензии
Еще одно обновление, выпущенное на этот раз,AboutDialog
Доступна новая адаптивная страница лицензии в формате .
Новая страница лицензии
От участников сообществаTonicArtosизPR 57588, который не только обновляется в соответствии с рекомендациями по материалам, чтобы он выглядел лучше, но и упрощает навигацию и предназначен для работы на планшетах и настольных компьютерах так же хорошо, как и на телефонах. Спасибо, TonicArtos!Поскольку каждое приложение Flutter должно показывать лицензии используемых пакетов, вы просто делаете каждое приложение Flutter лучше!
Для подключаемого модуля публикации требуется новый формат pubspec.yaml.
Конечно, Flutter — это не только виджеты, но и инструменты, обновлений в этой версии слишком много, чтобы перечислять их по одному. Тем не менее, вот некоторые основные моменты. Во-первых, это декларация общедоступной службы: если вы являетесь автором плагина Flutter, публикация плагинов больше не поддерживается в традиционном формате pubspec.yaml. Если вы попытаетесь, выполнитеpub publish, вы получите следующее сообщение об ошибке:
Сообщение об ошибке формата pubspec осталось после публикации плагина.
Старый формат не поддерживает указание платформ, которые поддерживает ваш плагин, и устарел, начиная с Flutter 1.12. Публикация новых или обновленных плагинов теперь требует использованияновыйpubspec.yaml
Формат.
Для клиентов плагинов инструментарий по-прежнему понимает старый формат pubspec и будет поддерживать его в обозримом будущем. Все используют традиционные на pub.devpubspec.yaml
Существующие плагины для этого формата будут продолжать работать с приложениями Flutter в обозримом будущем.
Предварительный просмотр встроенных инструментов Dart DevTools в Visual Studio Code.
Самое большое обновление инструмента в этом выпуске связано с расширением Visual Studio Code, которое предоставляет предварительную версию новой функции, позволяющей перенести экран Dart DevTools непосредственно в рабочую область кодирования.
Предварительный просмотр браузера макетов Dart DevTools, встроенного в Visual Studio Code.
использовать новыйdart.previewEmbeddedDevToolsУстановите, чтобы включить эту функцию. На снимке экрана выше показан Flutter Widget Inspector, встроенный непосредственно в Visual Studio Code, но если этот новый параметр включен, вы можете использовать меню Dart DevTools в строке состояния, чтобы выбрать свою любимую встраиваемую страницу.
Это меню позволяет выбрать страницу для отображения.
Эта функция все еще находится в превью,Дайте нам знать, если у вас есть какие-либо вопросы.
Обновления веб-отслеживания
Последняя версия Dart DevTools поставляется с обновленной версией страницы «Сеть», которая позволяет профилировать сетевые сокеты.
Время, статус и тип содержимого сокетных подключений на странице сети Dart DevTools.
Сетевые страницы теперь добавляют информацию о времени для сетевых вызовов вашего приложения, а также другую информацию, такую как статус и тип содержимого. Мы также внесли дополнительные улучшения в пользовательский интерфейс сведений, чтобы предоставить обзор данных в веб-сокетах или HTTP-запросах. У нас также есть дополнительные планы для этой страницы, включая тела запросов/ответов HTTP и мониторинг трафика gRPC.
Оператор обновления импорта для переименования файла
Еще одна новая функция Visual Studio Code — «Обновить импорт при переименовании», которая автоматически обновляет операторы импорта при перемещении или переименовании файлов.
Переместите файл Dart в Visual Studio Code, обновите оператор импорта.
В настоящее время эта функция работает только с одним файлом, а не с несколькими файлами или папками, но эта поддержка появится.
Метаданные инструмента предоставляются для каждого производителя инструмента.
Еще одно обновление, которое необходимо упомянуть, предназначено для людей, создающих инструменты Flutter. Мы создали новый проект на GitHub для сбора и публикации метаданных о самом фреймворке Flutter. Он предоставляет машиночитаемые файлы данных для следующего.
- Все текущие виджеты Flutterсодержание(395 виджетов!).
- Имя цвета структуры Flutter для отображения значения цвета, для наборов цветов Material и Cupertino.
- Материал и КупертиноМетаданные значка, включая имя значка и предварительный просмотр.
Это те же самые метаданные, которые мы сами используем в расширениях Android Studio/IntelliJ и VS Code; мы подумали, что они могут пригодиться вам при создании собственных инструментов. Фактически, эти метаданные позволяют функциям семейства IDE IntelliJ отображать цвета, используемые в вашем коде Flutter.
С этим связана новая функция в IntelliJ и Android Studio для отображения цветовых полей Color.fromARGB() и Color.fromRGBO().
Отдельное спасибо GitHubdratushnyyВнес вклад в улучшение предварительного просмотра цвета в IntelliJ!
Канал платформы Typesafe для взаимодействия платформ
В ответ на распространенный запрос авторов плагинов в опросах пользователей недавно мы экспериментировали с тем, как сделать связь между Flutter и хост-платформой более безопасной и удобной.плагина такжеAdd-to-App. Чтобы удовлетворить эту потребность, мы создалиPigeon, инструмент командной строки, который использует синтаксис Dart для создания безопасного для типов кода сообщения поверх каналов платформы без добавления дополнительных зависимостей во время выполнения. С Pigeon вместо ручного сопоставления строк методов и сериализации аргументов на канале платформы вы можете вызывать методы класса Java/Objective-C/Kotlin/Swift и передавать несобственные объекты данных, вызывая методы Dart напрямую (и наоборот). курс).
Хотя Pigeon все еще находится на стадии предварительного выпуска, он уже достаточно зрелый, чтобы мы самиvideo_playerИспользуйте его в плагинах. Если вы заинтересованы в тестировании Pigeon для собственного использования, см.platform channelдокументация и этопример проекта.
Слишком много обновлений инструмента, чтобы перечислить их все
Поскольку во время Flutter 1.20 произошло так много замечательных вещей, мы не можем перечислить здесь все инструменты. Тем не менее, вы можете взглянуть на само объявление об обновлении:
- VS Code extensions v3.13
- VS Code extensions v3.12
- VS Code extensions v3.11
- Выпущен плагин Flutter IntelliJ M46
- Выпущен плагин Flutter IntelliJ Plugin M47
- Выпущен плагин Flutter IntelliJ Plugin M48
- Новый инструмент для разработчиков Flutter, созданный с помощью Flutter
Прорывное изменение
Как всегда, мы стараемся свести количество ломающих модификаций к минимуму. Вот список выпусков Flutter 1.20:
- 55336Добавить вкладкуSemanticsLabel в КупертиноЛокализации -Руководство по миграции PR.
- 55977 Добавьте clipBehavior в виджет с помощью clipRect.
- 55998 Исправлена проблема, из-за которой все еще оставались маршруты, ожидающие обновления страницы навигатора и аварийного завершения..
- 56582 Обновите семантику вкладки в Купертино, чтобы она совпадала с материалом..
- 57065Удалены необычные подпараметры для сегментов управления перекрытием NestedScrollView.
- 58392Индикатор активности перетаскивания в iOS
резюме
Надеюсь, вы так же взволнованы этим релизом, как и мы. Во многих отношениях это самый крупный выпуск Flutter. Благодаря улучшениям производительности, новым и обновленным виджетам и улучшениям инструментов мы можем выделить только самые важные моменты. Мы хотим поблагодарить вас, сильное и растущее сообщество участников, которое делает каждый выпуск Flutter больше, быстрее и сильнее, чем предыдущий. Это еще не все: поддержка null-safe, новые версии плагинов Ads, Maps и WebView, а также поддержка дополнительных инструментов в разработке. (На самом деле, вы могли бы задаться вопросом о том, как Боб НистромПонимание нулевой безопасностизаинтересованы в более глубоком изучении).
Со всей этой дополнительной мощью во Flutter и инструментами, что вы собираетесь построить?
пройти через(www.DeepL.com/Translator) (бесплатная версия) перевести