В выпуске Flutter 3.0 включены стабильные версии для macOS и Linux, а также связанные с ними улучшения производительности. Оригинальная статья доступна по ссылке https://medium.com/flutter/whats-new-in-flutter-3-8c74a5bc32d0
Снова настало время выпуска стабильной версии Flutter. Три месяца назад мы выпустили стабильную версию для Windows, а сегодня Flutter официально поддерживает стабильную работу на macOS и Linux.
Хотелось бы поблагодарить всех участников проекта Flutter за их труд. В этом выпуске было объединено 5248 pull requests.
Основные моменты выпуска Flutter 3.0 включают:
Linux и macOS достигли стабильной фазы развития, что включает следующие возможности:
Теперь можно использовать PlatformMenuBar
, чтобы создать меню бара на macOS. Этот виджет поддерживает только включение платформенного меню и управление содержимым меню бара macOS.
Поддерживается использование методов ввода (редакторы методов ввода), таких как китайский, японский и корейский, на всех десктопных платформах Flutter 3.0. Также поддерживаются сторонние методы ввода, такие как Sogou и Японская клавиатура от Google.
Flutter для Windows, macOS и Linux полностью поддерживает сервисы доступности, такие как чтение экрана, навигация для людей с ограниченными возможностями и инвертирование цветов.
Начиная с Flutter 3, все приложения Flutter для macOS будут строиться как универсальные двоичные файлы, что обеспечивает поддержку существующих компьютеров на базе процессоров Intel и устройств Apple Silicon.
В Flutter Yöntemleri Girişi (IMEs) gibi Çince, Japonca ve Korece dillerinin tüm masaüstü platformlarında kullanılması desteklenmektedir. Ayrıca Sogou ve Google Japonya Klavyesi gibi üçüncü taraf IME'ler de desteklenmektedir.
Flutter, Windows, Mac OS ve Linux'te ekran okuyucuları, engelli kullanıcılar için gezinme araçları ve renk tersten çevirme gibi erişilebilirlik hizmetlerini tam olarak desteklemektedir.
Flutter 3 ile birlikte, tüm Flutter uygulamaları MacOS için genel ikili dosya olarak oluşturulmaktadır, bu sayede Intel işlemcileri ve Apple Silicon cihazlarını destekleyebilmekteyiz.
Flutter 3.0 ile birlikte, Windows 10'e geçiş önerilmektedir. Şu anda Flutter ekip tarafından Windows 7, Windows 8 ve Windows 8.1 üzerinde geliştirme yapmakta yasaklanmamakla birlikte, Microsoft'un bu sürümleri artık desteklemediğini unutmamalıyız. O halde, olsa olsa bu sürümler için "destek olma" seçeneği sunulsa da, yeni sürümlere geçmek daha uygun olacaktır.> Uyarı: şu anda Flutter'nin Windows 7 ve Windows 8 üzerinde normal çalışmasını destekliyoruz; ancak bu değişiklik sadece geliştirme ortamını etkilemektedir.
Внимание: в настоящее время продолжается поддержка нормального функционирования Flutter на Windows 7 и Windows 8; данное изменение затрагивает только среду разработки.# Обновление мобильной платформы
Обновление мобильной платформы включает следующие изменения:
С версии Flutter 3 начинается поддержка складных мобильных устройств. В рамках сотрудничества с Microsoft появились новые возможности и виджеты, позволяющие разработчикам получать более комфортный опыт работы со складными устройствами.
Это включает в себя то, что MediaQuery
теперь содержит список DisplayFeatures
, который описывает границы и состояние устройства, такие как шарнир, складывание и вырезы. Кроме того, DisplayFeatureSubScreen
теперь можно использовать для позиционирования его подвиджетов так, чтобы они не пересекались с границами DisplayFeatures
. Это уже интегрировано с дефолтными диалоговыми окнами и попапами фреймворка, что позволяет Flutter немедленно воспринимать и реагировать на эти компоненты.
Особую благодарность мы выражаем команде Microsoft, особенно @andreidiaconu, за их вклад! Также можно попробовать пример использования симулятора Surface Duo, который включает специальную ветку Flutter Gallery для демонстрации применения Flutter на складных экранах.
Flutter теперь поддерживает переменную частоту обновления ProMotion на iOS, включая iPhone 13 Pro и iPad Pro.На этих устройствах Flutter может отображаться с частотой до 120 Гц, тогда как ранее максимальная частота обновления на iOS была ограничена 60 Гц. Для получения дополнительной информации обратитесь к flutter.dev/go/variable-refresh-rate.
Дополнительно см.: «Flutter 120 Гц высокая частота обновления на Android и iOS»
Команда Flutter добавила новые опции для команды flutter build ipa, чтобы упростить выпуск приложений для iOS.
При подготовке к распространению через TestFlight или App Store разработчики могут создать архив Xcode (*.xcarchive
) и пакет приложения (*.ipa
) с помощью выполнения команды flutter build ipa
. Здесь можно выбрать добавление опций --export-method ad-hoc
, --export-method development
или --export-method enterprise
для настройки метода выпуска. После сборки приложения пакет можно загрузить в Apple через Apple Transport macOS приложение или с помощью командной строки, используя xcrun altool
(используйте man altool
для аутентификации ключей для API App Store Connect). После загрузки приложение может быть выпущено в TestFlight или App Store.
С помощью этого упрощенного процесса, после начальной настройки проекта в Xcode, таких как имя и значок приложения, разработчики больше не должны открывать Xcode для выпуска iOS приложений.## Обновление версий Gradle
Теперь при создании нового проекта с помощью Flutter Tool используется последняя версия Gradle и Android Gradle Plugin. Для существующих проектов требуется ручное обновление до версий Gradle 7.4 и Android Gradle плагина OnClickListener 7.1.2.
Как было объявлено в стабильной версии 2.10 от февраля 2022 года, поддержка 32-битных устройств iOS и версий iOS 9 и 10 будет прекращена. Это изменение затрагивает устройства iPhone 4S, iPhone 5, iPhone 5C и второго, третьего и четвертого поколений iPad. Версия Flutter 3 является последней, поддерживающей эти устройства.
Чтобы узнать больше об этом изменении, просмотрите RFC: End of support for 32-bit iOS devices.
Обновления для веб-приложений включают следующее:
Flutter для веб теперь автоматически обнаруживает и использует API ImageDecoder там, где это поддерживается браузерами. Большинство современных браузеров на основе Chromium (Google Chrome, Microsoft Edge, Opera, Samsung Internet и т.д.) уже поддерживают этот API.
Новый API использует встроенные декодеры изображений браузера для асинхронной декодировки изображений с главного потока, что увеличивает скорость декодирования изображений в два раза и никогда не блокирует главный поток, тем самым устраняя все проблемы замедления, вызванные изображениями ранее.## Жизненный цикл веб-приложений
Новые API жизненного цикла Flutter Web позволяют разработчикам более гибко контролировать процесс запуска Flutter-приложения с управляемой HTML-страницы и помогают анализировать производительность приложения с помощью Lighthouse, включая часто запрашиваемые сценарии:
Для получения дополнительной информации см. раздел Настройка initialization custom web application на docs.flutter.dev.
Обновления инструментов Flutter и Dart включают:
Пакет lint версии 2.0 выпущен:
При создании приложений с помощью Flutter 3 через команду flutter create
, автоматически будут использоваться правила lint версии 2.0. Flutter теперь рекомендует существующим приложениям, библиотекам и плагинам мигрировать на версию 2.0 для использования этих правил, что можно сделать, выполнив команду flutter pub upgrade --major-versions flutter_lints
.Большинство новых предупреждений Lint версии 2 имеют возможность автоматического исправления. После обновления до последней версии пакета в файле pubspec.yaml
, вы можете выполнить команду dart fix --apply
для автоматической корректировки большинства предупреждений Lint (хотя некоторые могут требовать некоторой ручной работы).> Приложения, библиотеки или плагины, которые ещё не используют пакет package:flutter_lints
, могут использовать руководство по миграции для перехода.
Спасибо участнику knopp, поддержка локального перерисовывания была включена на устройствах Android.
По данным локальных тестов, это изменение уменьшило время отрисовки кадров на 90-ом и 99-ом процентиле на 5 раз соответственно, а также уменьшило время выполнения теста backdrop_filter_perf
на Pixel 4 XL устройстве. Теперь iOS и Android устройства, основанные на этом обновлении, поддерживают частичное перерисовывание, особенно когда область повреждения состоит всего лишь из одного прямоугольника.
Кроме того, Flutter 3.0 значительно улучшил производительность работы с непрозрачными анимациями. Особенно когда компонент Opacity
содержит всего одну примитивную фигуру, вызовы метода saveLayer
под ним обычно игнорируются. По результатам тестирования, время растрирования увеличилось в десятки раз. В будущих версиях мы планируем применить эту оптимизацию к большим количествам сценариев. Спасибо ещё раз участнику JsouLiang за его вклад. Теперь потоки растрового отображения и UI на Android и iOS имеют более высокий приоритет по сравнению с другими потоками, такими как фоновый поток сборки мусора Dart VM, что привело к снижению среднего времени сборки фреймворка на 20% согласно нашим тестам производительности.До версии Flutter 3.0 стратегия доступа к кэшу растрового изображения проверялась только на основе количества операций рисования в изображении. К сожалению, это приводило к тому, что движок использовал больше памяти для кэширования изображений, которые на самом деле рисуются очень быстро. В новой версии была внедрена механика, которая оценивает сложность рендеринга изображения на основе стоимости операций рисования в изображении, используя её как стратегию доступа к кэшу растрового изображения, что позволяет снизить использование памяти, не снижая производительность по данным наших тестов.
Большое спасибо вкладчику ColdPaleLight за исправление ошибки в планировщике кадров, которое приводило к тому, что небольшая часть анимационных кадров на iOS игнорировалась.
Команда продолжает работать над решением проблемы задержек на iOS и других платформах. В версии Flutter 3 можно будет предварительно просмотреть экспериментальный инструмент рендеринга под названием Impeller на iOS. Impeller предварительно компилирует набор меньших и более простых шейдеров во время сборки движка, чтобы они не компилировались во время выполнения приложения, что является основной причиной задержек в Flutter.Импеллер пока не готов к официальному выпуску и находится далеко от завершения, поэтому не все функции Flutter поддерживаются им, но мы довольны точностью и производительностью в приложении Flutter /gallery, особенно в худших кадрах переходных анимаций, где скорость улучшилась примерно в 20 раз по данным наших тестов производительности. Импеллер можно запустить в iOS с помощью тега запуска, передав --enable-impeller
командой flutter run
, либо установив флаг FLTEnableImpeller
в файле Info.plist
как значение true
для попытки использования Импеллера
При использовании google_mobile_ads
разработчики могут получить лучшую производительность во время ключевых взаимодействий пользователя (например, прокрутка между страницами и переходы).
Под капотом Flutter теперь использует новые асинхронные компоненты для реализации Android представлений, которые обычно называются платформенными представлениями. Это значит, что поток Flutter растрового отображения больше не обязан ждать рендеринга Android представлений. Вместо этого движок Flutter использует текстуры OpenGL, управляемые им, чтобы размещать представления на экране.
Другие обновления экосистемы Flutter включают:## Материал 3
Flutter 3 поддерживает Material Design 3, следующее поколение Material Design.
Flutter 3 предоставляет больше опциональной поддержки для Material 3, включая такие функции Material You, как динамическое цветовое оформление, новую цветовую систему и шрифты, обновленные компоненты и новые визуальные эффекты, такие как новое дизайнерское касание и эффект перетягивания при прокрутке, представленные в Android 12.
Разработчики могут попробовать функции Material 3 в лаборатории кода Превратите свое приложение Flutter из скучного в красивое. Подробнее о том, как включить эти новые возможности и какие компоненты поддерживают Material 3, см. API документацию.
Теперь Flutter может использовать концепцию расширений тем, чтобы добавлять любое содержимое в Material ThemeData
. Разработчики могут добавлять свои собственные расширения через ThemeData.extensions
, вместо того чтобы (в смысле Dart) наследовать ThemeData
и переопределять его методы copyWith
, lerp
и другие.
Кроме того, если вы являетесь разработчиком пакета, вы можете предоставлять контент, связанный с ThemeExtensions
. Для получения более подробной информации о данном контенте, обратитесь к flutter.dev/go/theme-extensions и примеру на GitHub.## Рекламы
Для издателей важно получать согласие на персонализированную рекламу и обрабатывать App Tracking Transparency (ATT) от Apple. Для поддержки этих требований Google предоставляет платформу передачи сообщений пользователя (UMP SDK), которая заменила предыдущий открытый исходный код Consent SDK. В будущей версии SDK GMA для Flutter мы добавим поддержку UMP SDK, чтобы помочь издателям получать согласие от пользователей.
Для получения более подробной информации просмотрите страницу google_mobile_ads на pub.dev.
При постоянном совершенствовании Flutter наша цель — минимизировать количество критических изменений, а с выходом Flutter 3 были внесены следующие изменения:
Если вы используете эти API, обратитесь к руководству по миграции на Flutter.dev.
Flutter 3 как основная часть презентации Google I/O завершил маршрут Flutter от мобильной платформы до многофункционального фреймворка. Новая версия предлагает поддержку приложений для рабочих станций macOS и Linux, улучшенную интеграцию с Firebase, повышение производительности и поддержку Apple Silicon и многое другое.
Flutter стремится полностью изменить подход к разработке приложений: объединив модель итерационного развития для веба с аппаратно-ускоренным графическим рендерингом и пиксельным контролем, которые ранее использовались в играх.
С момента выпуска бета-версии Flutter 1.0 четыре года назад команда Flutter продолжает строить на этом, добавляя новые возможности фреймворка и виджеты, углубленную интеграцию с нижним уровнем платформы, богатую поддержку пакетов и множество улучшений производительности и инструментов.
По мере развития продукта все больше людей начинают использовать Flutter для создания приложений. Сегодня насчитывается более 500 000 приложений, созданных с использованием Flutter.
Анализ исследовательских компаний, таких как data.ai, а также публичные рекомендации показывают, что Flutter используется во многих отраслях:- Социальные приложения, такие как WeChat;
Финансовые и банковские приложения, такие как Betterment и Nubank;
Поддерживаемые приложения, такие как My BMW;
Государственные учреждения, такие как правительство Бразилии.
Сегодня насчитывается более 500 000 приложений, созданных с использованием Flutter.
Разработчики сообщают, что Flutter позволяет быстрее создавать красивые приложения для большего количества платформ. В наших последних исследованиях среди пользователей:
"Не преувеличивая, можно сказать, что использование [Flutter] имеет некоторую степень 'премиальности', которая отличается от всего, что наша команда когда-либо доставляла. Для дизайнеров это самое важное — Flutter позволяет легко создавать новые UI, что означает, что наша команда может провести меньше времени, говоря 'нет' требованиям, и больше времени на их итерацию. Это звучит очень хорошо, поэтому мы рекомендуем попробовать Flutter."
С помощью Flutter 3 разработчики могут создавать приложения для шести платформ с использованием одного кодового репозитория, что обеспечивает небывалую продуктивность для разработчиков и помогает стартапам быстро внедрять новые идеи на целевых рынках.
В предыдущих версиях мы добавили поддержку Web и Windows для iOS и Android. Теперь Flutter 3 предоставляет стабильную поддержку для приложений macOS и Linux.Добавление поддержки конкретной платформы означает больше, чем просто отрисовку пикселей: это включает новые модели ввода и взаимодействия, компиляцию и сборку, доступность и международную локализацию, а также специфичные интеграции для каждой платформы. Цель команды Flutter — позволить разработчикам гибко использовать возможности базовых операционных систем, одновременно максимально используя общие UI и логику по выбору разработчика.На macOS теперь поддерживаются как Intel, так и Apple Silicon, предоставляя поддержку Universal Binary, которая позволяет приложению упаковывать исполняемые файлы для двух архитектур. На Linux Canonical и Google сотрудничают для предоставления оптимальных вариантов разработки.
Superlist является отличным примером того, как Flutter реализует приложения для рабочего стола, и сегодня он будет выпущен в тестовой версии.
Superlist предлагает возможности для совместной работы, объединяя списки, задачи и свободно форматируемый контент в новых приложениях для управления делами и планирования жизни. Команда Superlist выбрала Flutter за его способность предлагать быстрое, высококачественное рабочее окружение для десктопа, и мы считаем, что их прогресс до настоящего времени подтверждает правильность этого выбора.
Flutter 3 также улучшил многие основные функции, включая производительность, поддержку Material You и повышение эффективности разработки.Кроме упомянутых выше работ, в этой версии Flutter полностью поддерживает разработку на основе чипов Apple. Хотя Flutter был совместим с устройствами Apple на основе M1 с момента своего выпуска, теперь он может полноценно использовать поддержку Dart для чипов Apple, что позволяет быстрее компилировать приложения на устройствах на основе M1 и поддерживать Universal Binary файлы для приложений macOS. Наши работы над Material Design 3 также были завершены в этом выпуске, что позволяет разработчикам предоставлять динамические схемы цветов и новые визуальные компоненты, используя адаптивную кросс-платформенную систему дизайна.
Flutter поддерживается Dart, который представляет собой высоко продуктивный, переносимый язык для многоплатформенного программирования. В этом цикле мы сделали следующие улучшения для Dart:
Для получения более подробной информации о всех новых улучшениях в Dart 2.17, см. блог.
Конечно, создание приложений не ограничивается только пользовательским интерфейсом; издатели приложений нуждаются в наборе инструментов для создания, публикации и запуска приложений, включая аутентификацию, хранение данных, облачные функции и тестирование устройств и т.д.
Существует множество сервисов, поддерживающих Flutter, включая Sentry, AppWrite и AWS Amplify.
Google предлагает свои услуги через Firebase. Исследование SlashData показало, что 62% разработчиков Flutter используют Firebase в своих приложениях.Поэтому за последнее несколько версий мы работали вместе с Firebase, чтобы лучше интегрировать Flutter. Это включает выпуск плагина Firebase для Flutter до версии 1.0, добавление лучшей документации и инструментов, а также новых виджетов, таких как FlutterFire UI, которые предоставляют повторно используемые интерфейсы аутентификации и профиля пользователя.Сегодня мы объявляем об обновлении интеграции Flutter/Firebase до уровня основной поддержки продуктов Firebase. Мы перемещаем исходный код и документацию в хранилище и сайт Firebase, где разработчики могут ожидать совместимого развития поддержки Flutter для Firebase с Android и iOS.
Кроме того, мы внедрили ряд значительных улучшений для поддержки службы отчетности об ошибках Crashlytics во время использования Firebase. Через Flutter плагин Crashlytics разработчики могут в реальном времени отслеживать критические ошибки, обеспечивая такой же набор функций, как и для разработчиков iOS и Android. Это включает важные оповещения и метрики, такие как "пользователи без аварий", что помогает разработчикам следить за стабильностью приложения. Аналитическая система Crashlytics была обновлена и доработана для лучшей поддержки ошибок в Flutter, чтобы быстрее сортировать, расставлять приоритеты и исправлять проблемы.
Наконец, мы упростили процесс настройки плагинов, поэтому теперь достаточно нескольких шагов для запуска и работы Crashlytics из Dart-кода.
Для большинства разработчиков Flutter является лишь фреймворком для приложений. Однако, с растущим сообществом разработчиков мобильных игр, спрос на использование аппаратно-ускоренной графики и открытых игровых движков, таких как Flame, продолжает расти.Мы хотим сделать работу с Flutter более доступной для разработчиков мобильных игр, поэтому сегодня на конференции I/O мы объявили о выпуске Инструментов для игры, который предоставляет шаблоны и руководства по использованию лучших практик, а также рекламные и облачные сервисы.
Хотя Flutter не предназначен специально для рендера сложных 3D-игр, но некоторые негеймовые интерфейсы уже используют его, включая популярные игры с миллиардами пользователей, такие как PUBG Mobile.
Для I/O мы хотели узнать, до какой степени можно использовать эту технологию, поэтому команда Flutter создала интересную игру в виде пинбола, которая поддерживается Firebase и сетью Flutter.
I/O Pinball предлагает игру, основанную на логотипах Google: Flutter's Dash, Firebase's Sparky, Android Robot и Chrome Dinosaur, которую мы считаем забавным способом демонстрации возможностей Flutter.
Почему нам нравится Flutter? Это не просто потому, что это продукт Google — а потому, что это продукт "для всех".
Открытый исходный код позволяет всем участвовать и получать выгоду от успеха этого проекта, будь то через внесение новых кодов или документов, создание пакетов для основного фреймворка, написание книг и курсов обучения.Чтобы продемонстрировать лучшие достижения нашего сообщества, недавно мы сотрудничали с DevPost для проведения конкурса Puzzle Hack Challenge, где разработчики могли показать свои навыки путём переосмысления классической игры "Sweet Puzzle" с помощью Flutter, что продемонстрировало, как могут объединиться веб-, десктоп- и мобильные платформы.
Связанный видео-ссылка: https://youtu.be/l6hw4o6_Wcs
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )