Добро пожаловать в Flutter 2.8! В этом выпуске содержится работа более чем 207 участников и Yöntem olarak, kavramlar ve terimler diller arası geçişte korunmuştur. İnceleme sonucunda, belirli bir dil bilgisi gerektiren veya teknik bir bağlamı olan ifadelerin çevirisi, orijinal metindeki anlamını koruyacak şekilde yapılmıştır.
Добро пожаловать в Flutter 2.8! В этом выпуске содержится работа более чем 207 участников и 178 рецензентов, что составляет 2 424 объединённых запроса на слияние и закрытие 2 976 задач.
Как обычно, первоочередной задачей работы над Flutter является обеспечение качества, поэтому мы уделяем много времени тому, чтобы гарантировать, что Flutter работает максимально гладко и надёжно на всех поддерживаемых устройствах.
## Запуск приложения
**Этот выпуск улучшил запуск приложений с задержками**, это улучшение было проведено в Google Pay, как крупном приложении с кодом более чем в миллион строк, использование которого для тестирования гарантирует, что изменения действительно влияют на производительность.
**Все эти улучшения привели к снижению задержек запуска Google Pay на низкосортных Android-устройствах на 50%, а на высокосортных — на 10%**.
Flutter может помочь избежать неуместного сбора мусора во время запуска приложения путём воздействия на стратегию сбора мусора Dart VM.
> Например, до отрисовки первой фреймовой картинки на Android, Flutter теперь [сообщает Dart VM только о сигналах давления памяти уровня TRIM_LEVEL_RUNNING_CRITICAL и выше](https://github.com/flutter/flutter/issues/90551). В локальных тестах этот изменение уменшило время отрисовки первой фреймы на низкосортных устройствах до 300 миллисекунд.
Здесь все необходимые строки переведены на русский язык, сохраняя исходное форматирование и структуру документа.Из-за строгих соображений, в предыдущих версиях Flutter блокировал платформенный поток при создании платформенного представления, но благодаря детальному анализу и тестированию было установлено, что можно удалить некоторые этапы сериализации, что позволило устранить блокировки свыше OnClickListener миллисекунд во время запуска Google Pay на низкосортных устройствах.
Кроме того, ранее задержка при установке дефолтного менеджера шрифтов искусственно вводилась при настройке первого Dart Isolate, но задержка дефолтного менеджера шрифтов и настройка Dart Isolate
позволяют улучшить задержку запуска и сделать вышеупомянутые оптимизации ещё более эффективными.
Поскольку Flutter часто загружает "сервисный Isolate" Dart VM, который представляет собой часть AOT-кода, связанную с приложением, Flutter загружает оба этих компонента одновременно в память. Это вызывает проблемы при профилировании производительности для устройств с ограниченной памятью, как было замечено. В версии 2.8 для устройств на базе Android сервисный изолят Dart VM был разделен на отдельную библиотеку, что позволило сэкономить до 40 МБ памяти.При помощи сообщений системы о состоянии памяти использование памяти было снижено ещё на 10%, так как AOT программы могут использовать память без необходимости повторной загрузки файлов, а страницы, использовавшиеся ранее для хранения бэкапов данных файлов, теперь могут быть освобождены для других целей.
Для лучшего понимания проблем производительности приложения в версии 2.8 можно включить отправку событий трассировки в Android systrace
регистратор уже при запуске приложения, даже если Flutter приложение собрано в режиме выпуска.
Кроме того, чтобы создать более плавные анимации, разработчики могут захотеть получить больше информации о производительности, связанной с поведением буферизации растра, поскольку это довольно дорогостоящее действие для Flutter. События нового потока трассировки позволяют отслеживать жизненный цикл кэшированных изображений растра, вместо перерисовки каждого изображения на каждом кадре.
Для диагностики проблем производительности в этой версии DevTools
была добавлена новая функция "Улучшенная трассировка", которая помогает разработчикам выявить проблемы с замедлением интерфейса, вызванное дорогими операциями сборки, размещения и отрисовки.
После активации любой из этих функций трассировки временная шкала будет содержать новые события для сборки виджетов, размещения рендера объектов и отрисовки рендера объектов (в зависимости от ситуации).
Кроме того, эта версия DevTools
добавила поддержку анализа производительности запуска приложений, где профиль содержит образцы процессора от инициализации Dart VM до первого отрендеренного кадра Flutter.
После нажатия кнопки "Профилировать запуск приложения" и загрузки профиля запуска приложения разработчики смогут увидеть выбранный ими пользовательский метка "AppStartUp". Также они могут загрузить профиль запуска приложения, выбрав этот пользовательский метка фильтр из доступного списка пользовательских меток (если он существует).
Выбор этого метки показывает данные профиля запуска приложения.
Android и iOS не являются единственными платформами, получившими улучшение производительности; в этом выпуске также были улучшены показатели производительности Flutter Web.
Flutter Web использует виджет HtmlElementView
, который позволяет разработчикам встраивать HTML-элементы в приложения Flutter Web.Если вы используете плагины google_maps_flutter
или video_player
для версий для веба, или если вы следовали рекомендациям команды Flutter по оптимизации отображения изображений в сети, то вы уже используете platform views.В предыдущих версиях Flutter platform view сразу создавал новый холст, а каждый дополнительный platform view добавлял ещё один холст. Однако создание дополнительных холстов было дорогостоящим процессом, так как каждый холст был размером с весь экран.
Поэтому в данном выпуске используется повторное использование ранее созданного холста platform view, что означает, что разработчики могут иметь несколько экземпляров HtmlElementView
в своих веб-приложениях без снижения производительности, а также уменьшается скроллинг при использовании platform views.
Следующее новое обновление webview_flutter
— это увеличение номера версии, которое произошло благодаря большому количеству новых возможностей и значительному изменению способа работы web-вью на Android.
В предыдущих версиях режим hybrid composition в webview_flutter
был доступен, но не являлся значением по умолчанию.Смешанное составление исправило множество проблем, существовавших в предыдущем режиме виртуальных дисплеев по умолчанию, согласно отзывам пользователей и отслеживанию проблем. Мы считаем, что теперь время пришло, чтобы сделать смешанное составление значением по умолчанию, а также webview_flutter
получил ряд требовательных функций:
Кроме того, в версии 3.0 пакет webview_flutter
предоставляет начальную поддержку новых платформ: веб. Эта поддержка позволяет разработчикам создавать мобильные и веб-приложения из одного кодового репозитория, хостя веб-вью в приложении Flutter для веба. Вот как выглядит веб-вью в Flutter Web:```dart
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';
import 'package:webview_flutter_web/webview_flutter_web.dart';
void main() { runApp(const MaterialApp(home: HomePage())); }
class HomePage extends StatefulWidget { const HomePage({Key? key}) : super(key: key);
@override State createState() => _HomePageState(); }
class _HomePageState extends State { @override void initState() { super.initState();
// требуется пока поддержка веба находится в режиме предварительной проверки
if (kIsWeb) WebView.platform = WebWebViewPlatform();
}
@override Widget build(BuildContext context) => Scaffold( appBar: AppBar(title: const Text('Пример Flutter WebView')), body: const WebView(initialUrl: 'https://flutter.dev'), ); }
При запуске на вебе она также работает так, как ожидают разработчики:

Обратите внимание, что **на данный момент реализация `webview_flutter` для веба имеет множество ограничений, поскольку она основана на использовании `iframe`**.
Поддерживается только простое загрузочное URL, управление содержимым или взаимодействие с ним недоступны.
> Для получения более подробной информации обратитесь к [Readme `webview_flutter_web`](https://pub.dev/packages/webview_flutter_web).
Однако, поскольку `webview_flutter_web` очень популярен, он будет предоставлен как [нерекомендованный плагин](https://docs.flutter.dev/development/packages-and-plugins/developing-packages#endorsed-federated-plugin). Если вы хотите попробовать его, добавьте следующую строку в ваш `pubspec.yaml`:
```yaml
dependencies:
webview_flutter: ^3.0.0
webview_flutter_web: ^0.1.0 # явное указание нерекомендованного плагина
```## Flutter Favorites
Экосистемный комитет снова провёл заседание и определил следующие Flutter Favorites пакеты:
- Три пакета для кастомизации маршрутизатора: [`beamer`](https://pub.dev/packages/beamer), [`routemaster`](https://pub.dev/packages/routemaster) и [`go_router`](https://pub.dev/packages/go_router)
- [`drift`](https://pub.dev/packages/drift), мощная и популярная библиотека для реактивной персистентности в Flutter и Dart, основанная на `SQLite`
- [`freezed`](https://pub.dev/packages/freezed), "языковое дополнение" для Dart, которое предоставляет простой синтаксис для определения моделей, клонирования объектов, шаблонного соответствия и т.д.
- [`dart_code_metrics`](https://pub.dev/packages/dart_code_metrics)
- Несколько красивых графических пакетов для пользовательского интерфейса: [`flex_color_scheme`](https://pub.dev/packages/flex_color_scheme), [`flutter_svg`](https://pub.dev/packages/flutter_svg), [`feedback`](https://pub.dev/packages/feedback), [`toggle_switch`](https://pub.dev/packages/toggle_switch) и [`auto_size_text`](https://pub.dev/packages/auto_size_text)
# Платформенно-зависимые пакеты
Если вы автор пакета, вам необходимо выбрать, какие платформы будут поддерживаться. Если вы используете платформенно-зависимый нативный код для создания плагинов, можно использовать атрибут `pluginClass` в проекте, чтобы реализовать это, как показано здесь:
```yaml
flutter:
plugin:
platforms:
android:
package: com.example.hello
pluginClass: HelloPlugin
ios:
pluginClass: HelloPlugin
```Однако с развитием [Dart FFI](https://dart.dev/guides/libraries/c-interop) становится возможным реализация функционала для конкретной платформы полностью на Dart, как это сделано в пакете `path_provider_windows`. Поэтому если нет доступного нативного класса, но вы хотите указать ваш пакет как поддерживающий только некоторые платформы, следует использовать свойство `dartPluginClass`:```yaml
flutter:
plugin:
implements: hello
platforms:
windows:
dartPluginClass: HelloPluginWindows
После использования этого конфигурационного файла, даже если нет нативного кода, пакет будет указан как поддерживающий только некоторые платформы, и также необходимо предоставить Dart-плагинный класс; подробнее можно узнать в документации по реализации Dart-only для платформ на сайте flutter.dev.
В связи с множеством обновлений и доработок, большую часть которых мы не используем внутри страны, детальное описание пропущено.
Версия Flutter 2.8 сделала ещё один шаг в направлении стабильной версии для Windows, macOS и Linux. Это включает поддержку международализации и локализации, таких как недавно добавленная поддержка китайского IME, корейского IME и императорских символов.
Пример подготовки к стабильной версии: полная переработка способа Flutter обрабатывает события клавиатуры для возможности синхронного отклика, что позволяет виджетам обрабатывать нажатие кнопок и прекращать дальнейшее распространение этих событий по дереву.Изначально эти изменения были внедрены в Flutter 2.5 и Flutter 2.8 для исправления проблем, что привело к переработке подхода к обработке специфических для устройства событий клавиатуры, а также к переработке подхода Flutter к работе с редактированием текста; всё это было необходимо для приложений с плотной работой с клавиатурой. Кроме того, мы продолжаем расширять поддержку Flutter для визуальной плотности и открываем способы выравнивания диалоговых окон для более десктопной дружественной пользователю интерфейсы.
Наконец, команда Flutter не единственная, которая работает над Flutter для десктопа. Например, десктопная команда Canonical сотрудничает с Invertase для реализации наиболее популярных плагинов Flutter Firebase на Linux и Windows.
Улучшения DartPad, среди которых самое значительное — это поддержка большего количества пакетов. На самом деле теперь доступно 23 пакета для импорта, включая несколько сервисов Firebase, таких как bloc
, characters
, collection
, google_fonts
и flutter_riverpod
. Команда DartPad продолжает добавлять новые пакеты, поэтому если вы хотите узнать, какие пакеты поддерживаются в данный момент, нажмите значок информации в правом нижнем углу.
Еще одно новое удобство DartPad также доступно. Раньше DartPad всегда запускал последнюю стабильную версию, но в этой версии можно выбрать канал beta или старую стабильную версию через меню каналов в области состояния.
Flutter "канал" контролирует скорость изменения базового фреймворка Flutter и движка на вашей машине. Stable представляет собой минимальное количество проблем, а master — максимальное.
Из-за ограничений ресурсов мы недавно прекратили обновление канала dev
. Хотя некоторые вопросы были получены по этому поводу, было установлено, что менее 3% разработчиков Flutter используют этот канал dev
.Поэтому мы решили официально отозвать процесс использования канала dev
, так как мало разработчиков используют его, но инженеры Flutter должны тратить много времени и усилий на его поддержание.
Вы можете использовать команду flutter channel
, чтобы выбрать желаемый канал. Вот взгляд команды Flutter на каждый канал:
Канал stable
представляет собой самый высококачественный сборочный продукт, который мы имеем. Они выпускаются каждые три месяца (приблизительно) и содержат горячие исправления для ключевых проблем, то есть это "медленный" канал: безопасный, зрелый, долгосрочное обслуживание.
Канал beta
предлагает быстрый способ продвижения для тех, кто привык к более быстрому темпу. В настоящее время он выпускается ежемесячно.
Канал master
является нашим активным каналом разработки, мы не предоставляем поддержку для этого канала, но проводим полный набор юнит-тестов для него.
Когда в ближайшие месяцы будет отключен канал dev
, рекомендуется рассмотреть каналы beta
или master
, в зависимости от уровня терпимости к проблемам и потребностей в последних и лучших версиях.
Как обычно, мы стремимся снизить количество критических изменений в каждом выпуске. В этом выпуске Flutter Yöntem 2.8 нет критических изменений, кроме устаревших API, которые были удалены согласно нашей политике критических изменений:
Пожалуйста, замените "Yöntem 2.8" на "Flutter 2.8":
Как обычно, мы стремимся снизить количество критических изменений в каждом выпуске. В этом выпуске Flutter 2.8 нет критических изменений, кроме устаревших API, которые были удалены согласно нашей политике критических изменений:- 90292 Удаление устаревшего autovalidate
FloatingHeaderSnapConfiguration.vsync
AndroidViewController.id
BottomNavigationBarItem.title
После просмотра обновлений Flutter 2.8 можно сказать, что основной акцент сделан на производительность, стабильность и корректировке WebView. В целом этот выпуск должен быть достаточно дружелюбным, так как практически нет критических изменений. Поэтому его стоит попробовать, особенно после выхода версии bkod 2.8.3.
Исправление: "особенно после выхода версии bkod 2.8.3." -> "особенно после выхода версии 2.8.3."
Финальный текст:
autovalidate
FloatingHeaderSnapConfiguration.vsync
AndroidViewController.id
BottomNavigationBarItem.title
После просмотра обновлений Flutter 2.8 можно сказать, что основной акцент сделан на производительность, стабильность и корректировке WebView. В целом этот выпуск должен быть достаточно дружелюбным, так как практически нет критических изменений. Поэтому его стоит попробовать, особенно после выхода версии 2.8.3.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )