Неправильное использование ParentDataWidget. Вызвано не конечной переменной в StatefulWidget

#flutter

#трепетать

Вопрос:

Я новичок в flutter и пытаюсь создать виджет, который изменяет свой текст при нажатии на него. Я не могу сделать переменную couter окончательной, потому что ее можно изменить в методе setState. Но поскольку «класс, от которого наследует [мой] класс», помечен как @immutable (я полагаю, StatefulWidget), я всегда получаю исключение «Неправильное использование ParentDataWidget».

Есть ли решение этой проблемы или есть лучший способ реализовать такой виджет.

Вот мой код:

 class TopInfoBanner extends StatefulWidget {  int counter = 0;  TopInfoBanner({Key? key}) : super(key: key);   @override  Statelt;TopInfoBannergt; createState() =gt; _TopInfoBannerState(); }  class _TopInfoBannerState extends Statelt;TopInfoBannergt; {  final Color textColor = cSecondaryColor;   @override  Widget build(BuildContext context) {  return Container(  height: 42.0,  color: cBoxColor,  child: Expanded(  child: Padding(  padding: const EdgeInsets.symmetric(vertical: 2.0),  child: InkWell(  onTap: () {  setState(  () {  widget.counter  ;  },  );  },  child: Row(  mainAxisAlignment: MainAxisAlignment.spaceEvenly,  children: [  if (widget.counter % 3 == 0)  infoBuilder('text 1', Icons.update_sharp),  if (widget.counter % 3 == 1)  infoBuilder(  'text 2', Icons.ac_unit_sharp),  if (widget.counter % 3 == 2)  infoBuilder('text 3',  Icons.gpp_good_outlined),  ],  ),  ),  ),  ),  );  }   Padding infoBuilder(String text, IconData icon) {  return Padding(  padding: const EdgeInsets.symmetric(vertical: 8.0),  child: Row(  children: [  Icon(  icon,  color: textColor,  ),  Text(  text,  style: Theme.of(context)  .textTheme  .bodyText1!  .copyWith(color: textColor),  ),  ],  ),  );  } }  

Ответ №1:

Расширенный виджет предназначен для строки и столбца.

Комментарии:

1. Боже, я не могу поверить, что это было решением. Спасибо и приветствия Франции