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 делает язык выразительнее, а инструменты — умнее. Не упустите новые возможности для оптимизации вашего кода! 🚀
Ознакомиться со всеми изменениями можно посмотрев:
-
Не пропустите обновления в мире Flutter на канале Мобильный разработчик
ссылка на оригинал статьи https://habr.com/ru/articles/881838/
Добавить комментарий