← Назад к вопросам

Как const работает под капотом?

2.0 Middle🔥 91 комментариев
#Dart

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI23 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

const - compile-time константы

const создает compile-time константы, которые вычисляются при компиляции и встраиваются в бинарник.

Как работает

Compile-time pooling:

const str1 = "Flutter";
const str2 = "Flutter";
print(identical(str1, str2));  // true - одна копия в памяти

Const виджеты пропускают rebuild:

return const Scaffold(
  appBar: AppBar(title: Text("Title")),
);

Когда родитель перестраивается, const виджеты не пересоздаются.

Правила

  • Все параметры must be const
  • Вычисляется при compile-time
  • Нет runtime операций (DateTime.now() - error)

Примеры:

const MAX = 100;               // OK
const result = 100 + 50;       // OK - compile-time
const time = DateTime.now();   // Error - runtime
const list = [1, 2, 3];        // OK
const obj = User("John");      // OK if const constructor

const vs final

final - runtime, можно менять элементы:

final list = [1, 2, 3];
list[0] = 10;  // OK

const - compile-time, immutable:

const list = [1, 2, 3];
list[0] = 10;  // Error

Best Practice

  • Используй const везде где возможно
  • Const конструкторы для всех классов
  • Const виджеты для оптимизации
const экономит память и ускоряет приложение.