6 мая 2020 года Flutter наконец-то представила первую стабильную версию этого года:1.17.0
, с момента последнего стабильного релиза прошло почти 5 месяцев (146 дней). получено по всему мируЧто мы с тобой знаемВлияние Google I/O в этом году также было отменено, что в определенной степени повлияло на выпуск этой версии. В то же время перед выпуском появилась ошибка с серьезным влиянием, которая также привела к повторной задержке времени выпуска.
Так1.17.0
Что именно обновляется? Может ли это снова подорвать пользовательский опыт? Может ли это снова сделать разработчиков действительно ароматными? Следующие проходыЧастичное резюме, перевод и дополнение оригинального текста Medium, чтобы ответить за всех~ (Если есть ошибки, пожалуйста, укажите) (есть содержание, которого нет в английском оригинале 😉)
написать впереди
Для выпуска этой версии Flutter команда разработчиков потратит больше времени наСоздайте новую архитектуру процесса выпуска. Это было решено с момента последней стабильной версии6339 выпусков (выпуск)соответственно из231 участник с открытым исходным кодомобъединены3164 запроса на фиксацию. выгодаNeverCodeСотрудничество с командой, в этом году команда закрыла больше задач в репозитории Flutter, чем новых добавленных задач, и общее количество уменьшилось.около 800. Вместе с Flutter также выпущен Dart 2.8, новая поддержка рендеринга Metal для iOS, новые компоненты Meter и новые инструменты отладки сетевой трассировки.
Мобильная производительность и оптимизация размера приложения
Работа по оптимизации производительности и памяти находится в центре внимания этой новой версии. После обновления до новой версии пользователи сразу же получат более плавную и быструю анимацию, меньший размер приложения и меньшее использование памяти. Теперь общие сценарии перехода маршрута (непрозрачные переходы маршрута) будутУскорение на 20%-37%. В зависимости от аппаратной производительности различных устройств использование ЦП/ГП может быть снижено до 40 % на простой анимации iOS (engine#14104 / engine#13976).
Этот выпуск также включает в себя множество оптимизаций размера приложения. например, официальное приложение-витринаFlutter GalleryРазмер пакета Android-приложения был уменьшен с 9,6 МБ до 8,1 МБ (18,5%).
Кроме того, с точки зрения использования памяти, использование памяти и колебания, вызванные быстрой прокруткой списков с картинками, всегда были одной из болевых точек Flutter. Эта версия будет быстро прокручивать список сцен с картинками (большие изображения)Использование памяти уменьшено на 70%.
Однако наиболее примечательным приростом производительности является поддержка iOS Metal.
Поддержка Metal повышает производительность приложений iOS на 50 %.
MetalЭто API, выпущенный с iOS 8, который имеет как графические, так и вычислительные функции, низкоуровневое аппаратное ускорение и низкие накладные расходы.[4]и другие преимущества. Flutter теперь по умолчанию использует Metal, что ускоряет рендеринг обычных пользовательских приложений на 50%.(определяется фактическим бизнесом).
На устройствах, не поддерживающих Metal (процессор A7 и iOS 10 ниже), Flutter продолжит использовать OpenGL для рендеринга.
Виджет материала:NavigationRail
,DatePicker
,VisualDensity
и больше
Команда Flutter постоянно совершенствует реализацию Material Design во Flutter на основе отзывов клиентов. На этот раз команда Material Design разработала и внедрила компонент маршрутизации для адаптивного макета приложения.NavigationRail
, компонент можно комбинировать сBottomNavigator
Быстрые переходы, адаптация к большим размерам устройств, хорошая адаптация к макетам мобильных и настольных компьютеров.
Быстрый опытNavigationRail
может получить доступdemoили вdartpadПримерь.
Кроме того, выбор даты на основе Material DesignDatePicker
также опубликованы вместе. новыйDatePicker
Использование визуальных элементов, соответствующих Руководству по материалам, черезПодробная статьяВыучить больше.
VisualDensity
Это также недавно представленный контент, который относится к визуальной плотности различных компонентов в Material Design. Настроив его, стандартные компоненты Материала можно сделать более компактными или разнесенными. новая версия вThemeData
Настройки представлены в (ThemeData.visualDensity
). Для получения подробной информации, пожалуйста, перейдитеДокументация.
Меню выбора текста также было улучшено для платформы. Теперь опции в меню будут автоматически сворачиваться, когда превышают ширину экрана и могут переключаться той же операцией, что и нативная, что решает проблему переполнения макета, когда текст элемента операции слишком длинный в некоторые языки.
Выбор текста для платформы Android
Выбор текста для платформы iOS
Вместе с 1.17 команда Flutter выпустилаСистема движения материаладефолтпакет компонентов анимации.
в материалеВведение в систему движения СтатьяВ , команда Material Design определила четыре типа анимационных переходов от компонента к полноэкранному представлению: контейнерный переход, коаксиальный переход, плавное затухание, градиент. Хотя Flutter может изначально реализовать соответствующие эффекты, этот пакет компонентов анимации упрощает их реализацию разработчиками.
Material Text: более современная текстовая тема Flutter.
В выпуске этой версии команда Flutter полностью интегрировала стандартное определение размера текста Material Design 2018 года, исходя из того, что оно совместимо с предыдущими версиями приложения. оригинальныйTextTheme
Использование API не изменилось, но теперь помечено какзаброшенный, напоминая разработчикам о необходимости как можно скорее перейти на новый стандарт.
в ФлаттерTextTheme
середина,bodyText1
иbodyText2
Соответствует материальному дизайнуbody1
иbody2
. Похожие такжеH1-H6
,соответствоватьheadline1-headline6
.
Google шрифты для флаттера
Если вы заинтересованы в новом масштабировании текста в Material Design, то, я думаю, вы заинтересованы в его использовании во Flutter.GoogleFonts
Также возлагайте большие надежды.
GoogleFonts
Позвольте разработчикам легко испытать и использовать в разработанном приложенииfonts.google.com
Разработчики могут позволить пользователям загружать шрифты напрямую через API или предоставлять эти шрифты, встроенные в приложение.
Доступность и интернационализация
Еще одно направление, на котором команда Flutter продолжает фокусироваться, — это доступность, которая сделает приложения Flutter более доступными и повысит удобство использования для конкретных сценариев. в этой версии длягорка,Слово,Поле вводаидругие входные компонентыфиксированныймного вопросов. Официально рекомендуют разработчикам обновиться согласно документуЛучшие практикидля тестирования собственного приложения.
Что касается интернационализации, команда исправила влияние Samsung IME на многие восточноазиатские языки. Разработчики Смекты должны отметить эти изменения 🤣
Инструменты: Dart DevTools с интеграцией Flutter, отладка приложений Android Quickstart и многое другое.
Этот выпуск поставляется с предстоящей интеграцией Dart DevTools с Flutter. Если вы хотите попробовать это сейчас, запустите DevTools и щелкните значок «стакан» в правом верхнем углу.
В пре-релизе DevTools вы увидите несколько пунктов оптимизации, но самый важный из нихNetwork
(Интернет) Табл.
На вкладке Сеть теперь можно просматривать сетевые запросы от приложений для быстрого и простого устранения неполадок. Если разработчик не находит эту вкладку в DevTools, ее можно обновить или включить с помощью следующих команд:
$ pub global actiat devtools
По умолчанию на вкладке сети будет отображаться ваша сетевая активность после того, как вы нажмете «Запись», но если разработчик хочет записывать с самого начала приложения, вы можетеmain()
На портале используются следующие методы:
void main() {
// 启用网络请求输出
HttpClient.enableTimelineLogging = true;
runApp(MyApp());
}
Новый DevTools предлагает еще одну экспериментальную функцию:Android «Быстрый старт», что позволяет разработчикам включать отладку на 70 % быстрее. Эта функция может бытьflutter run --fast-start -d <your Android Device>
на. При использовании функции на устройство будет установлен пакет APK-оболочки, основанный только на коде платформы, без кода дротика и изменений ресурсов. Поскольку изменение кода или ресурсов дротика не требует перестроения APK, это делаетflutter run
Начинай быстрее. В отличие от традиционного режима запуска, эта функция помещает ваш код в оболочку для запуска. В некоторых случаях эта функция не будет работать, например, когда приложение использует собственный подключаемый модуль для вызова метода.
Начиная с этой версии, при создании нового приложения Flutter будет разрешено создавать только приложения, использующие AndroidX. Команда пометила все API-интерфейсы поддержки как устаревшие при создании новых проектов.--android
Единственные полезные параметры. Хотя приложение версии поддержки еще можно нормально упаковать, оно немигрироватьКогда будет больше?
Если разработчик является пользователем Android Studio или IntelliJ, вы обнаружите, что горячая перезагрузка становится более гибкой. Раньше разработчики запрещали горячую перезагрузку, когда анализатор думал, что в коде есть ошибка. Досадно тратить больше времени на устранение этих ошибок, когда они не влияют на функцию, которую вы сейчас разрабатываете или отлаживаете. С этого момента анализатор больше не имеет права блокировать процесс горячей перезагрузки, а оставить его на суд процессу компиляции ВМ.
Эти изменения публикуются в соответствующей dev ветке.Если разработчики хотят поучаствовать как можно скорее, они могут пройтиздесьЗарегистрироваться. Благодаря участию в тестировании новых версий, более частым обновлениям и обратной связи с командой Flutter плагин компилятора будет более надежным.
Для разработчиков VS Code команда рекомендует новую функцию:Dart: список устаревших пакетов (pub outdated
). Это может помочь разработчикам устранять проблемы, вызванные несоответствием версий зависимостей.
Наконец, если разработчик сталкивается со сбоем Flutter, инструмент поможет разработчику правильно сообщить об исключении, а команда Flutter уделит пристальное внимание серьезности и частоте таких ошибок.
Несовместимые изменения
Этот выпуск содержит следующие основные несовместимые изменения API:
- #42100 вторичная анимация вызывается, когда используется pushReplacement
- #44930Навигатор 2.0 Императивные изменения API
- #45940Устаревший UpdateLiveRegionEvent
- #49389Декодирование изображения при задержке быстрой прокрутки
- #49391Переполнение выбора текста Android
- #49771 Не устанавливайте утверждение кеша для пустого Painter
- #50318 кэширование изображений в реальном времени
- #50354 Вычислите прямоугольники, используя высоту распорки, чтобы убедиться, что они находятся в пределах видимости.
- #50733Сгенерировать информационный запрос для gen_I10n
-
#51435от
RouteSettings
удалено вisInitialRoute
-
#52781будет
mouse_tracking.dart
перейти к рендерингу
напиши в конце
2020 обещает быть необычным годом, и Флаттер не исключение. Но команда Flutter выстояла при мощной поддержке папы Гу и проделала огромную работу, приветствую команду!
Приглашаем всех присоединиться как обычноFlutter Candies, вместе создавать милые и полезные 🍬. (Группа QQ: 181398081)
References: