Dart. Flutter. The instance member 'iconSize' can't be accessed in an initializer
У меня есть простой Stateless Widget. В методе build я возвращаю строку с IconButton-ами, которые заранее определил в этом классе. Я хотел сделать эти кнопки одинаково размера и для того, чтобы не писать несколько раз в свойстве size виджета Icon одно и тоже число создал double переменную iconSize. При попытке пихнуть ее в свойство вместо числа, получаю ошибку The instance member 'iconSize' can't be accessed in an initializer.
Объясните пожалуйста почему возникает ошибка и как можно реализовать задумку правильно?
class ActionButtonsWidget extends StatelessWidget {
double iconSize = 30;
IconButton _startButton = IconButton(
onPressed: (){},
icon: const Icon(Icons.play_circle_outline_outlined, size: iconSize));
IconButton _pauseButton = IconButton(
onPressed: (){},
icon: const Icon(Icons.pause_circle_outline_outlined, size: iconSize));
IconButton _restartButton = IconButton(
onPressed: (){},
icon: const Icon(Icons.restart_alt_outlined, size: iconSize));
@override
Widget build(BuildContext context) {
return Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
_startButton,
_restartButton
],
);
}
}
Ответы (1 шт):
Происходит она потому что переменная инициализируется в момент создания класса, в этот момент доступа к другим не статичным переменным нет.
Ваша проблема решается двумя способами.
- Через static:
static const double iconSize = 30;
- Не выделять виджет в переменную:
class ActionButtonsWidget extends StatelessWidget {
double iconSize = 30;
@override
Widget build(BuildContext context) {
return Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
IconButton(
onPressed: () {},
icon: Icon(Icons.play_circle_outline_outlined, size: iconSize)),
],
);
}
}