惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

人人都是产品经理
人人都是产品经理
Blog — PlanetScale
Blog — PlanetScale
MyScale Blog
MyScale Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
WordPress大学
WordPress大学
Vercel News
Vercel News
D
Docker
博客园 - 聂微东
T
Tailwind CSS Blog
aimingoo的专栏
aimingoo的专栏
云风的 BLOG
云风的 BLOG
D
DataBreaches.Net
B
Blog RSS Feed
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - Franky
Microsoft Security Blog
Microsoft Security Blog
美团技术团队
F
Fortinet All Blogs
MongoDB | Blog
MongoDB | Blog
T
The Blog of Author Tim Ferriss
GbyAI
GbyAI
N
Netflix TechBlog - Medium
G
Google Developers Blog
腾讯CDC

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания
Dart 3.12 — что нового в Dart?
lil_master · 2026-05-21 · via Все публикации подряд на Хабре

Уровень сложностиПростой

Время на прочтение7 мин

Охват и читатели0

Дайджест

Перевод

В этом году на конференции 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 язык не позволял именованному параметру начинаться с подчеркивания:

class Hummingbird {
  final String _petName;
  final int _wingbeatsPerSecond;

  // Compile error! Can't have private named parameter. :(
  Hummingbird({required this._petName, required this._wingbeatsPerSecond});
}

Вместо этого вам приходилось писать явный список инициализаторов:

class Hummingbird {
  final String _petName;
  final int _wingbeatsPerSecond;

  Hummingbird({required String petName, required int wingbeatsPerSecond})
    : _petName = petName,
      _wingbeatsPerSecond = wingbeatsPerSecond;
}

Это было утомительно. Список инициализаторов всего лишь удаляет _. Он добавлял ненужный шаблонный код в простые классы.

В Dart 3.12 язык может сделать это за вас. Теперь мы позволяем вам писать приватные именованные формальные инициализирующие конструкции:

class Hummingbird {
  final String _petName;
  final int _wingbeatsPerSecond;

  // OK with "Private Named Parameters"! :D
  Hummingbird({required this._petName, required this._wingbeatsPerSecond});
}

Этот код ведёт себя точно так же, как и предыдущий пример. Инициализированные поля являются приватными, но параметры конструктора и имена аргументов, записываемые в месте вызова, имеют соответствующие публичные имена:

void main() {
  print(Hummingbird(petName: 'Dash', wingbeatsPerSecond: 75));
}

Подробнее : Документация по приватным именованным параметрам .

Первичные конструкторы (экспериментальная фаза)

Мы рады представить вам предварительный обзор одной из самых востребованных синтаксических функций Dart. Первичные конструкторы представляют собой значительный шаг вперед в плане лаконичности классов. Они устраняют необходимость повторять имена полей и типы в теле класса и списках параметров.

Обычно даже простой класс, состоящий всего из двух полей, требует множества строк повторяющегося шаблонного текста:

class Point {
  final int x;
  final int y;
  Point(this.x, this.y);
}

Первичные конструкторы полностью меняют ситуацию. Теперь вы можете заменить шаблонный код одной строкой, объявив параметры непосредственно в заголовочном файле класса.

class Point(final int x, final int y);

Эта функция идёт ещё дальше. Она вводит более короткий синтаксис для объявления конструкторов внутри тела класса с использованием ключевых слов  new и factory. Она также позволяет классам с пустым телом заканчиваться простой точкой с запятой:

class Pet {
  String name;

  new() : name = 'Fluffy';
  new withName(this.name);
}

class Dog extends Pet;

В Dart 3.12 в качестве экспериментальной предварительной версии запускаются основные конструкторы. Поскольку это фундаментальное изменение в способе определения классов Dart, ваши отзывы из реальной жизни крайне важны. Вы можете включить эту функцию, используя флаг primary-constructors при запуске вашего проекта:

dart run --enable-experiment=primary-constructors bin/main.dart

Если у вас возникнут какие-либо проблемы или замечания по дизайну, пожалуйста, создайте заявку в репозитории Dart SDK (и не стесняйтесь добавлять в копию @kallentu). Мы с нетерпением ждём ваших отзывов!

Подробнее : Документация по основным конструкторам .

Обновления экосистемы

Предварительный обзор Genkit Dart

Мы рады объявить о предварительном запуске Genkit Dart, фреймворка с открытым исходным кодом для создания полнофункциональных приложений на Dart и Flutter с поддержкой ИИ на любой платформе. Он предоставляет все необходимое для создания приложений с ИИ «из коробки»:

  • API, не зависящий от модели: поддерживает модели Google, Anthropic, OpenAI и совместимые с OpenAI.

  • Типобезопасность: Сочетает строгую систему типов Dart с schematicпакетом для генерации и обработки строго типизированных данных.

  • Запускайте где угодно: напишите логику ИИ один раз и запустите ее в бэкэнд-сервисе или непосредственно в вашем Flutter-приложении.

  • Пользовательский интерфейс разработчика: включает локальный веб-интерфейс для тестирования подсказок, просмотра трассировок и отладки рабочих процессов.

  • Основные примитивы ИИ: встроенная поддержка структурированного вывода, вызова инструментов и многоэтапных процессов.

Вызов нескольких моделей всего несколькими строками кода:

import 'package:genkit/genkit.dart';
import 'package:genkit_google_genai/genkit_google_genai.dart';
import 'package:genkit_anthropic/genkit_anthropic.dart';

void main() async {
  final ai = Genkit(plugins: [googleAI(), anthropic()]);

  // Call Google Gemini.
  final geminiResponse = await ai.generate(
    model: googleAI.gemini('gemini-flash-latest'),
    prompt: 'Hello from Gemini',
  );

  // Call Anthropic Claude.
  final claudeResponse = await ai.generate(
    model: anthropic.model('claude-opus-4.6'),
    prompt: 'Hello from Claude',
  );
}

Пообщайтесь с командой 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, что позволяет вашему агенту программирования мгновенно обнаруживать и подключаться к работающему приложению в вашем рабочем пространстве.

Благодаря отсутствию необходимости в настройке, эта интеграция оптимизирует ваши ежедневные рабочие процессы. Вы можете просто попросить своего агента по программированию исправить ошибку, изменить виджет пользовательского интерфейса или диагностировать сбой. Агент автоматически изменит ваш код, получит диагностические данные в режиме реального времени и перезагрузит приложение в режиме реального времени.

Анимация, демонстрирующая горячую перезагрузку приложения счетчика звезд Flutter сервером Dart MCP после того, как CLI Gemini изменил тему и анимацию звезд. В режиме разделенного экрана слева отображается работающий терминал macOS, а справа — эмулятор Android.

Анимация, демонстрирующая горячую перезагрузку приложения счетчика звезд Flutter сервером Dart MCP после того, как CLI Gemini изменил тему и анимацию звезд. В режиме разделенного экрана слева отображается работающий терминал macOS, а справа — эмулятор Android.

Анализ производительности сервера и диагностика.

Чтобы создать лучшие инструменты для всех, мы хотим понять производительность 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-клиент, он всё обрабатывает автоматически:

dependencies:
  kittens:
    git: https://github.com/munificent/kittens.git

Это существенное улучшение для команд, управляющих версиями больших медиафайлов, моделей данных или бинарных файлов непосредственно в своих репозиториях Git.

Заключение

Dart 3.12 — это важная веха в устранении препятствий для разработчиков. От лаконичных дополнений к синтаксису до бесшовных рабочих процессов ИИ-агентств и более сильной экосистемы ИИ — этот релиз создан для вашей поддержки. Каждая функция разработана для того, чтобы сделать вашу повседневную разработку чистой и эффективной.

Мы с нетерпением ждём, что вы создадите с помощью этих новых возможностей. Надеемся, вы запустите программу flutter upgrade сегодня, чтобы опробовать эти обновления. Если вы тестируете наши экспериментальные функции, такие как основные конструкторы, пожалуйста, поделитесь своим мнением. Вместе мы продолжим создавать язык, который приносит радость разработчикам каждый день и везде.

Подробнее : Список изменений Dart SDK .