На конференции Google I/O 2026 команда Dart выпустила версию 3.12 с набором изменений, которые затрагивают как синтаксис языка, так и его экосистему для разработки ИИ-приложений.
Наиболее практичное синтаксическое изменение — приватные именованные параметры. До версии 3.12 разработчик, желавший инициализировать приватное поле класса через именованный параметр конструктора, был вынужден писать явный список инициализаторов: объявить публичный параметр, а затем вручную присвоить его приватному полю с подчёркиванием. Dart 3.12 разрешает использовать `this._fieldName` прямо в сигнатуре конструктора — компилятор автоматически делает параметр публичным в месте вызова, убирая подчёркивание. Это небольшое, но ощутимое сокращение шаблонного кода в классах с приватными полями.
| Функция | Статус в Dart 3.12 | Как включить |
|---|---|---|
| Приватные именованные параметры | Стабильная | Доступна по умолчанию |
| Первичные конструкторы | Экспериментальная | --enable-experiment=primary-constructors |
| Genkit Dart | Предварительный запуск (preview) | Пакет genkit на pub.dev |
| Dart в Cloud Functions для Firebase | Экспериментальная | Документация Firebase |
| Agentic Hot Reload | Стабильная | Через сервер Dart MCP |
Ещё дальше идут первичные конструкторы — пока экспериментальная функция, доступная через флаг `--enable-experiment=primary-constructors`. Идея проста: параметры конструктора объявляются прямо в заголовке класса, и весь класс `Point` с двумя полями записывается одной строкой: `class Point(final int x, final int y);`. Дополнительно вводится более короткий синтаксис для конструкторов внутри тела класса с ключевыми словами `new` и `factory`. Команда Dart называет это одной из наиболее запрашиваемых синтаксических функций и просит сообщество тестировать её и оставлять отзывы в репозитории SDK.
Первичные конструкторы (экспериментально) позволяют объявить класс с двумя полями одной строкой вместо пяти.
Параллельно с языковыми изменениями Dart 3.12 расширяет экосистему в сторону ИИ-разработки. Genkit Dart — open-source фреймворк, портированный на Dart из уже существующего JavaScript-варианта Genkit от Google. Он предоставляет единый API для работы с моделями разных провайдеров: Google Gemini, Anthropic Claude, OpenAI и совместимые с OpenAI сервисы. Ключевая особенность — типобезопасность: строгая система типов Dart в сочетании с пакетом `schematic` позволяет генерировать и обрабатывать структурированные данные без потери типов. Фреймворк включает локальный веб-интерфейс для тестирования промптов и отладки рабочих процессов, а логику ИИ можно запускать как на бэкенде, так и непосредственно в Flutter-приложении.
Отдельное направление — экспериментальная поддержка Dart в Cloud Functions для Firebase. Исторически расширение Flutter-приложения на серверную сторону требовало переключения на JavaScript или Python и дублирования моделей данных. Теперь через паттерн «Shared Package» фронтенд и бэкенд могут напрямую использовать одни и те же классы, правила валидации и бизнес-логику. Компиляция Ahead-of-Time (AOT) обеспечивает быстрый холодный старт бессерверных функций без необходимости настраивать Docker-контейнеры.
Для разработчиков, работающих с ИИ-агентами, добавлена функция Agentic Hot Reload. Через сервер Dart MCP агент программирования получает возможность автоматически выполнять горячую перезагрузку приложения, не требуя от разработчика вручную искать и копировать URI подключения Dart Tooling Daemon. Это упрощает совместную работу человека и ИИ-агента в одном рабочем цикле разработки.


