Константные виджеты const в Flutter
Объект, известный на этапе компиляции,
можно пометить const. Для виджета
нужны const-конструктор класса и
константные аргументы при вызове. Тогда
Flutter переиспользует один экземпляр
и реже пересобирает дерево:
class Hint extends StatelessWidget {
const Hint({super.key});
@override
Widget build(BuildContext context) {
return const Text('Hint');
}
}
Вызов const Hint() и const Text('…')
внутри build допустимы, потому что
строка и виджет без параметров - константы.
Метку const нельзя ставить, если
аргумент вычисляют в runtime. Например,
значение из переменной или результат
функции не является compile-time constant:
var title = 'Screen';
// const Text(title); // compile error
Text(title); // this is valid
Сделайте виджет EmptyState с
const-конструктором:
class EmptyState extends StatelessWidget {
const EmptyState({super.key});
@override
Widget build(BuildContext context) {
return const Text('No data');
}
}
На экран поместите такой фрагмент:
var message = 'Hello';
Column(
children: [
const EmptyState(),
const Text(message), // compile error
Text(message), // this is valid
],
)
Строка с комментарием compile error
должна подсветиться как ошибка. Уберите
у неё const - ошибка пропадает.