#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. Боже, я не могу поверить, что это было решением. Спасибо и приветствия Франции