我有一个页面显示一堆小部件。它们都彼此分开,我需要更新UI。为此,我使用了StatefulBuilder
,它可以正常工作,但问题是我需要在它们之间传递setState
,因为我需要修改不同的小部件(例如标头操作)。
因此,我认为将所有这些StatefulBuilders
从它们中移走(我各有一个)并创建一个全局变量会有所帮助。而且确实需要,但仍需要将setState
传递给子代小部件。
是否可以将setState
分配给这样的全局变量?
var _setState = null;
class NewSetPage extends StatelessWidget {
@override
return StatefulBuilder(
builder: (BuildContext context, setState) {
setState(() {
_setState = setState;
});
return Scaffold(
...
在我的小部件中,我尝试了此操作,但是它不起作用:
_setState(() {
_setState = setState;
});
它不会抛出任何错误。
答案 0 :(得分:1)
如果要创建第一个孩子为stateless
的{{1}}小部件,则与创建stateful builder
相同。
为简单起见,您最好将小部件转换为stateful widget
,然后删除stateful
只有在需要更新无状态小部件的一小部分的情况下,我才会使用stateful builder
,而更改事件则来自该特定部分的内部。
有没有办法像这样将setState分配给全局变量?
我建议从不将state / stateSetter / context存储为全局变量,因为它会干扰常规的抖动。