Ответ
В Dart и Flutter я использую const для создания констант времени компиляции. Это не только про неизменяемость, но и про производительность.
Основные случаи использования:
-
Виджеты и их параметры: Если виджет и все его дочерние виджеты могут быть
const, Flutter может не перестраивать их при ребилде дерева. Это критично для производительности.// Хорошо - всё const const SizedBox( width: 16.0, child: const Text('Заголовок', style: const TextStyle(fontSize: 14)), ); // Плохо - виджет будет пересоздаваться каждый раз SizedBox( width: 16.0, child: Text('Заголовок', style: TextStyle(fontSize: 14)), ); - Константные коллекции и значения: Для неизменяемых списков, карт, цветов, стилей, которые используются в нескольких местах.
static const List<String> supportedLanguages = ['en', 'ru']; static const defaultPadding = const EdgeInsets.all(16.0);
Когда НЕ использовать const:
- Для объектов, которые зависят от данных времени выполнения (runtime).
- Если конструктор класса не помечен как
const.
Отличие от final:
finalгарантирует, что переменная будет инициализирована один раз (в runtime), но не делает её константой времени компиляции.const— этоfinal, но вычисляемое на этапе компиляции.