【发布时间】:2021-06-29 18:03:07
【问题描述】:
这是一个我希望能够重复使用的 Dart 堆栈:
Stack(children: [
Align(
alignment: Alignment.centerLeft,
child: IconButton(
splashRadius: 20,
icon: const Icon(Icons.keyboard_arrow_down_rounded),
tooltip: 'decrease bonus by 1',
onPressed: () => setState(() => value -= 1)),
),
Container(
width: 90,
child: Center(child: Text(value.toString()))),
Align(
alignment: Alignment.centerRight,
child: IconButton(
splashRadius: 20,
icon: const Icon(Icons.keyboard_arrow_up_rounded),
tooltip: 'increase bonus by 1',
onPressed: () => setState(() => value += 1)),
),
])
理想情况下,我想把这个堆栈变成一个小部件或函数,我可以用像 ArrowIncrement(value: value) 这样的小部件或像 ArrowIncrement(value) 这样的函数来调用它,但由于错误,我无法让它工作the function 'setState' isn't defined.
是否有针对此问题的解决方案或解决方法?
【问题讨论】:
-
把
Stack变成一个函数是什么意思?您可以创建一个返回Widget的函数,或者将您的onPressed方法重构为一个单独的函数。类似_increaseValue(value) => setState(() => value += 1); -
是的,理想情况下,我想创建一个函数,将上面的整个代码块作为小部件返回;不幸的是,由于 setState() 函数,它不起作用。
-
制作另一个“有状态”小部件,从它的构建方法中返回这个堆栈小部件!我猜你正在使用无状态小部件,在无状态小部件中你不能使用 setState 方法。
标签: flutter dart flutter-widget