Dart снова обновился! Локальные переменные и параметры с именем теперь можно не использовать, а анализатор подсказывает переменные экземпляра внутри инициализаторов late. Про эти и другие обновления, которые отследил бот @FlutterObserver_bot (кстати, сообщил быстрее команды Dart и Flutter), — дальше.🌟 Языковые обновленияПодстановочные переменные (Wildcard Variables)
Локальные переменные и параметры с именем _ теперь:
Не требуют обязательного использования.
Могут объявляться многократно без конфликтов.
Недоступны для чтения (значение игнорируется).
Пример использования:Foo(_, this._, super._, void _()) {} main() { var _ = 1; int _ = 2; list.where((_) => true); }
Юрий Петров, Tech Lead Friflex: Это упрощает код в случаях, когда значение переменной не важно (например, в колбэках). Но будьте осторожны — теперь _ не хранит данные!🛠 Инструменты и анализаторНовые исправления и правила
Автодополнение для late-полей: Теперь анализатор подсказывает переменные экземпляра внутри инициализаторов late.
Конвертация forEach в for: Учитывает правила prefer_final_in_for_each.
Объединение else if: Анализатор предлагает объединить вложенные if внутри else в else if.
30+ новых быстрых исправлений: Например, автоматическое добавление await или исправление импортов.
Юрий Петров, Tech Lead Friflex: Анализатор стал умнее — теперь он не только находит ошибки, но и помогает писать более красивый и понятный код.🎨 Dart formatНовый стиль для декларативного кода:
Автоматические запятые: сам добавляет/удаляет конечные запятые в списках.
Ширина страницы: Настраивается через analysis_options.yaml:formatter: page_width: 120
Исключение участков кода:// dart format off неформатируемый_код(); // dart format on
Петров Юрий, Tech Lead Friflex: Новый стиль делает код Flutter-виджетов гибче. Используйте // dart format off для сложных структур данных и только там, где это действительно необходимо!⚠️ Критические измененияУстаревшие библиотеки
Следующие библиотеки помечены как deprecated и будут удалены в следующем релизе:
dart:html, dart:js, dart:svg, dart:web_gl
Рекомендация: Переход на dart:js_interop и пакет package:web.
Петров Юрий, Tech Lead Friflex: Пора начать миграцию! Лучше не затягивать с этим.🚀 Производительность и компиляцияКомпиляторы dart2js и dartdevc.
Используют AOT-снимки вместо JIT, что ускоряет запуск.
Для DDC:/bin/dartaotruntime /bin/snapshots/dartdevc_aot.dart.snapshot
Петров Юрий, Tech Lead Friflex: AOT-компиляция уменьшает время сборки — особенно заметно в CI/CD-процессах.🐞 Исправления в версиях 3.6.x
HttpServer: Исправлено кодирование заголовков с Content-Type (#59719).
dart format: Корректная обработка цифровых разделителей (#59815).
dart fix: Исправлено применение исправлений в многофайловых проектах (#59572). Советы для миграции
Обновите SDK в pubspec.yaml:sdk: '^3.7.0'
Запустите dart pub get перед форматированием кода.
Используйте dart fix вместо dart format --fix.
Заключение: Dart 3.7 делает язык выразительнее, а инструменты — умнее. Не упустите новые возможности для оптимизации вашего кода! 🚀
Ознакомиться со всеми изменениями можно посмотрев:
CHANGELOGBreaking changes
Не пропустите обновления в мире Flutter на канале Мобильный разработчик
Источник новости: habr.com