在Flutter

时间:2019-12-30 10:19:45

标签: flutter

我有一个页面显示一堆小部件。它们都彼此分开,我需要更新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;
});

它不会抛出任何错误。

1 个答案:

答案 0 :(得分:1)

如果要创建第一个孩子为stateless的{​​{1}}小部件,则与创建stateful builder相同。

为简单起见,您最好将小部件转换为stateful widget,然后删除stateful

只有在需要更新无状态小部件的一小部分的情况下,我才会使用stateful builder,而更改事件则来自该特定部分的内部。

  

有没有办法像这样将setState分配给全局变量?

我建议从不将state / stateSetter / context存储为全局变量,因为它会干扰常规的抖动。