Ответ
Const конструктор в Dart создаёт объекты, которые являются неизменяемыми (immutable) и вычисляются на этапе компиляции. Это позволяет компилятору кэшировать и повторно использовать идентичные экземпляры, что экономит память и повышает производительность.
Ключевые условия для использования const конструктора:
- Все поля класса должны быть объявлены как
final. - Сам класс должен быть неизменяемым.
Пример:
class ImmutablePoint {
final double x;
final double y;
const ImmutablePoint(this.x, this.y);
}
void main() {
const point1 = ImmutablePoint(5.0, 10.0); // Создаётся в compile-time
const point2 = ImmutablePoint(5.0, 10.0); // Используется кэшированный экземпляр
print(identical(point1, point2)); // true — это один и тот же объект в памяти
// Сравнение с обычным конструктором:
final point3 = ImmutablePoint(5.0, 10.0);
final point4 = ImmutablePoint(5.0, 10.0);
print(identical(point3, point4)); // false — разные объекты
}
Практическое применение во Flutter:
Const конструкторы активно используются в виджетах Flutter для оптимизации перестроений. Например, Text, SizedBox, Padding имеют const конструкторы, что позволяет Flutter избегать лишних ререндеров при создании неизменяемых виджетов.