TGViewer
Flutter Pulse Flutter Pulse @flutterpulse · 1.01K subscribers
Post #3034 299
👣 Primary constructors в Dart: почему путь к простоте был таким сложным?

В Dart 3.13 наконец-то появилась долгожданная фича — primary constructors. Теперь можно объявить класс с полями и конструктором буквально в одну строку. Звучит просто, правда? Но за этим «сахаром» стоит история долгих споров и компромиссов.

Боб Нюстром (Bob Nystrom) подробно разобрал, через что пришлось пройти команде языка. Давайте выделим самое интересное 🧐

Зачем вообще нужен синтаксический сахар?
Он не добавляет новых возможностей, но оправдан в трех случаях:
🔹 Когда новый способ объективно лучше старого (как отмена обязательного
new

в Dart 2.0).
🔹 Когда он сильно упрощает частые сценарии (как появление настоящих
enum

).
🔹 Когда делает намерение кода более явным.

Главная боль: «Синтаксический клиф»
Представьте: вы написали класс через primary constructor, а потом захотели добавить логику в конструктор. Если синтаксис не позволяет добавить тело, вам придется переписывать всё на старый, многострочный вариант. Это и есть клиф — резкий обрыв удобства.

Чтобы этого избежать, в Dart добавили блоки
this { ... }

. Теперь можно расширить primary constructor, не ломая структуру:
class FormatterOptions(
  final int indent = 0,
  final int pageWidth = 80,
) {
  this {
    log.write('Created options.');
  }
}

И еще одна приятная мелочь: ключевое слово
new

Раньше для именованных конструкторов нужно было повторять имя класса. Если имя длинное — это боль. Теперь можно использовать
new

:
class LongClassName {
  new(); // безымянный
  new create(); // именованный
}

Для фабрик тоже стало короче:
class AnotherLongClass {
  factory () { ... }
  factory create() { ... }
}

Это не просто экономия символов. Это решение проблем с
typedef

и расширениями, где имя класса не всегда доступно.

💡 Итог
Primary constructors — это пример того, как язык может развиваться эволюционно. Команда Dart не просто добавила фичу, а продумала защиту от будущих проблем. Код стал чище, а работа с ним — приятнее.

Полную новость читайте здесь.

FlutterPulse — канал о мире Flutter!

#flutter #dart #FlutterPulse #FlutterPulseNews #hardworkerFlutter #code #dev
  • 👍 1
More from @flutterpulse
  1. Sep 30, 2026Как теплотехник в 50 лет стер границу между КИПиА и IT: пишем универсальный Android‑SCADA…
  2. Sep 30, 2026Обновлённые пакеты за последние 24 часа Bones_API 1.17.0 Фреймворк для создания API-бэкенд…
  3. Sep 30, 2026photo post
  4. Sep 29, 2026👣 Как встроить Unity игру во Flutter приложение Flutter — это король интерфейсов, навигац…
  5. Sep 29, 2026Обзор пакетов на тему Machine Learning, OCR & Computer Vision google_mlkit_commons 0.13.0…
  6. Sep 29, 2026Добавляем 3D в игру на Flame, не переписывая её 3D-графика в 2D-играх без переписывания ко…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →