В этом году на конференции Google I/O 2026 команды Flutter и Dart отмечают важную тему: «Везде, каждый день, создано всеми, для всех».
Dart 3.12 воплощает эту идею в жизнь. Мы делаем язык более доступным и продуктивным. Лаконичные новые примитивы, такие как приватные именованные параметры, наряду с экспериментальной поддержкой основных конструкторов, делают повседневное программирование более чистым. Но мы не остановились на синтаксическом уровне. Новые функции, такие как Agentic Hot Reload и добавление Genkit в экосистему Dart, гарантируют, что вы сможете создавать высокопроизводительные, готовые к использованию ИИ и агентные приложения, которые будут доступны пользователям в любой точке мира. Это справедливо как для индивидуального программирования, так и для парного программирования с ИИ-агентом.
Так что впередflutter upgrade, следуйте инструкциям, чтобы изучить новые возможности Dart 3.12. Но помните, что более мощный Dart — это только половина дела. Когда вы будете готовы увидеть, как эти функции преобразуются в красивый пользовательский интерфейс, ознакомьтесь с публикацией в блоге«Что нового во Flutter»илина Хабре.
Обновления языка
Частные именованные параметры
Инициализация формальных переменных в Dart с использованиемthis.синтаксиса конструктора невероятно удобна. Она напрямую сопоставляет параметр конструктора с полем класса. Это избавляет от необходимости писать повторяющийся код.
Но был один нюанс. Инициализация формальных параметров вызывала проблемы при сочетании именованных параметров с приватными полями. До Dart 3.12 язык не позволял именованному параметру начинаться с подчеркивания:
Вместо этого вам приходилось писать явный список инициализаторов:
Это было утомительно. Список инициализаторов всего лишь удаляет_. Он добавлял ненужный шаблонный код в простые классы.
В Dart 3.12 язык может сделать это за вас. Теперь мы позволяем вам писать приватные именованные формальные инициализирующие конструкции:
Этот код ведёт себя точно так же, как и предыдущий пример. Инициализированные поля являются приватными, но параметры конструктора и имена аргументов, записываемые в месте вызова, имеют соответствующие публичные имена:
Подробнее:Документация по приватным именованным параметрам.
Первичные конструкторы (экспериментальная фаза)
Мы рады представить вам предварительный обзор одной из самых востребованных синтаксических функций Dart. Первичные конструкторы представляют собой значительный шаг вперед в плане лаконичности классов. Они устраняют необходимость повторять имена полей и типы в теле класса и списках параметров.
Обычно даже простой класс, состоящий всего из двух полей, требует множества строк повторяющегося шаблонного текста:
Первичные конструкторы полностью меняют ситуацию. Теперь вы можете заменить шаблонный код одной строкой, объявив параметры непосредственно в заголовочном файле класса.
Эта функция идёт ещё дальше. Она вводит более короткий синтаксис для объявления конструкторов внутри тела класса с использованием ключевых словnewиfactory. Она также позволяет классам с пустым телом заканчиваться простой точкой с запятой:
В Dart 3.12 в качестве экспериментальной предварительной версии запускаются основные конструкторы. Поскольку это фундаментальное изменение в способе определения классов Dart, ваши отзывы из реальной жизни крайне важны. Вы можете включить эту функцию, используя флагprimary-constructorsпризапуске вашего проекта:
Если у вас возникнут какие-либо проблемы или замечания по дизайну, пожалуйста, создайте заявку врепозитории Dart SDK(и не стесняйтесь добавлять в копию@kallentu). Мы с нетерпением ждём ваших отзывов!
Подробнее:Документация по основным конструкторам.
Обновления экосистемы
Предварительный обзор Genkit Dart
Мы рады объявить о предварительном запуске Genkit Dart, фреймворка с открытым исходным кодом для создания полнофункциональных приложений на Dart и Flutter с поддержкой ИИ на любой платформе. Он предоставляет все необходимое для создания приложений с ИИ «из коробки»:
- API, не зависящий от модели:поддерживает модели Google, Anthropic, OpenAI и совместимые с OpenAI.
- Типобезопасность:Сочетает строгую систему типов Dart сschematicпакетом для генерации и обработки строго типизированных данных.
- Запускайте где угодно:напишите логику ИИ один раз и запустите ее в бэкэнд-сервисе или непосредственно в вашем Flutter-приложении.
- Пользовательский интерфейс разработчика:включает локальный веб-интерфейс для тестирования подсказок, просмотра трассировок и отладки рабочих процессов.
- Основные примитивы ИИ:встроенная поддержка структурированного вывода, вызова инструментов и многоэтапных процессов.
Вызов нескольких моделей всего несколькими строками кода:
Пообщайтесь с командой Genkit вDiscordи сообщите о любых проблемах наGitHub.
Узнайте больше:Краткое руководство по Genkit Dart.
Cloud Functions для Firebase и экспериментальная поддержка Dart.
Мы также рады сообщить о недавнем объявлении об экспериментальной поддержке Dart в Cloud Functions для Firebase. В течение многих лет расширение функциональности Flutter-приложения для облака означало переключение на другие языки программирования и дублирование структур данных.
Теперь вы можете создать по-настоящему унифицированное полнофункциональное приложение на Dart. Используя шаблон "Shared Package", вы можете напрямую обмениваться моделями данных, правилами валидации и бизнес-логикой между фронтендом и бэкендом, полностью исключая проблему "двойного документирования".
Благодаря компиляции Ahead-of-Time (AOT) в Dart, ваши бессерверные функции выигрывают от невероятно быстрого холодного запуска, обеспечивая мгновенное масштабирование и повышение производительности без необходимости использования Docker-файлов или настройки контейнеров.
Узнайте больше:статья в блоге о Dart и Firebase.
Обновления инструментов
Агентная горячая перезагрузка
Мы получили от нашего сообщества пожелания о бесперебойной работе агентов ИИ при использовании Dart и Flutter. Именно поэтому мы запускаем Agentic Hot Reload для приложений Dart и Flutter — новую функцию, разработанную для обеспечения бесперебойной работы вас и вашего агента программирования. Благодаря использованию сервера Dart MCP ваш агент программирования теперь может автоматически выполнять горячую перезагрузку, устраняя необходимость вручную искать и копировать URI подключения Dart Tooling Daemon (DTD).
В фоновом режиме демон Dart Tooling Daemon автоматически предоставляет информацию о подключении через команду CLI, выполняемую сервером MCP, что позволяет вашему агенту программирования мгновенно обнаруживать и подключаться к работающему приложению в вашем рабочем пространстве.
Благодаря отсутствию необходимости в настройке, эта интеграция оптимизирует ваши ежедневные рабочие процессы. Вы можете просто попросить своего агента по программированию исправить ошибку, изменить виджет пользовательского интерфейса или диагностировать сбой. Агент автоматически изменит ваш код, получит диагностические данные в режиме реального времени и перезагрузит приложение в режиме реального времени.
Анализ производительности сервера и диагностика.
Чтобы создать лучшие инструменты для всех, мы хотим понять производительность Dart Analysis Server (DAS) именно так, как вы её ощущаете на своём компьютере. Для этого мы ввели новуюdart info record-performanceкоманду.
Разработчики, сталкивающиеся с медленной обработкой данных или зависанием автозавершения кода, могут использовать эту команду для сбора трассировок выполнения и данных профилирования ЦП из активных процессов DAS на своих машинах. Включение этих трассировок в ваши сообщения об ошибках на GitHub предоставляет нашей команде точные данные из реальной жизни, необходимые для диагностики и решения сложных проблем с производительностью. Делясь своими трассировками, вы напрямую помогаете нам сделать Dart быстрее и надежнее для каждого разработчика.
Обновления паба
Встроенная поддержка Git LFS в pub
Использование пакетов с большими файлами стало проще, чем когда-либо. Начиная с Dart 3.12,dart pubреализована встроенная поддержка зависимостей Git с использованием Git Large File Storage (LFS).
Вам не потребуется никаких дополнительных настроек в вашемpubspec.yamlфайле. Покаgit lfsна вашем компьютере установлен pub-клиент, он всё обрабатывает автоматически:
Это существенное улучшение для команд, управляющих версиями больших медиафайлов, моделей данных или бинарных файлов непосредственно в своих репозиториях Git.
Заключение
Dart 3.12 — это важная веха в устранении препятствий для разработчиков. От лаконичных дополнений к синтаксису до бесшовных рабочих процессов ИИ-агентств и более сильной экосистемы ИИ — этот релиз создан для вашей поддержки. Каждая функция разработана для того, чтобы сделать вашу повседневную разработку чистой и эффективной.
Мы с нетерпением ждём, что вы создадите с помощью этих новых возможностей. Надеемся, вы запустите программуflutter upgradeсегодня, чтобы опробовать эти обновления. Если вы тестируете наши экспериментальные функции, такие как основные конструкторы, пожалуйста, поделитесь своим мнением. Вместе мы продолжим создавать язык, который приносит радость разработчикам каждый день и везде.
Подробнее:Список изменений Dart SDK.