#flutter #dart #mobile
Вопрос:
Я хочу достичь нескольких целей при реализации виджета:
- Использование виджета без состояния
- Использование темы для оформления виджета
- Избегайте вызова другого метода внутри метода сборки — по соображениям производительности (т. Е. Избегайте инициализации одних и тех же методов при каждой сборке)
давайте возьмем этот виджет для примера:
class SomeWidget extends StatelessWidget {
ButtonStyle _getStyle(context) {
return ElevatedButton.styleFrom(primary: Theme.of(context).primaryColor);
}
@override
Widget build(BuildContext context) {
return Container(
child: ElevatedButton(
style: _getStyle(context),
onPressed: () => ({}),
child: Text("test")));
}
}
функция _getStyle будет инициализироваться при каждом вызове сборки,
теперь, хотя это выглядит не так плохо, так как это всего лишь небольшой метод —
Я считаю это плохой практикой.
но у меня нет способа получить контекст вне метода сборки (и я все еще хочу использовать глобальные тематические данные).
если бы существовал какой — то механизм флаттера, предотвращающий многократное выполнение метода _getStyle в течение всего срока службы виджета, это также могло бы быть решением. (например, как часы в vue.js)
Как бы вы, эксперты по флаттеру, предложили подойти к этому?
Комментарии:
1. Разве это не относится только к виджетам с отслеживанием состояния? Я спрашиваю о виджетах без гражданства.
2. Вы действительно правы, извините!