Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 为颤振中的变量指定设置状态_Flutter - Fatal编程技术网

Flutter 为颤振中的变量指定设置状态

Flutter 为颤振中的变量指定设置状态,flutter,Flutter,我有一个页面显示了一堆小部件。所有这些都是相互分离的,我需要更新UI。为此,我使用了StatefulBuilder,它工作得很好,但问题是我需要在它们之间传递setState,因为我需要修改不同的小部件(例如标题操作) 因此,我认为将所有这些StatefulBuilders从它们身上移开(我每个都有一个)并创建一个全局构建器会有所帮助。它确实需要,但仍然需要将setState传递给子部件 有没有办法将setState分配给这样的全局var var _setState = null; class

我有一个页面显示了一堆小部件。所有这些都是相互分离的,我需要更新UI。为此,我使用了
StatefulBuilder
,它工作得很好,但问题是我需要在它们之间传递
setState
,因为我需要修改不同的小部件(例如标题操作)

因此,我认为将所有这些
StatefulBuilders
从它们身上移开(我每个都有一个)并创建一个全局构建器会有所帮助。它确实需要,但仍然需要将
setState
传递给子部件

有没有办法将
setState
分配给这样的全局var

var _setState = null;

class NewSetPage extends StatelessWidget {    
  @override
    return StatefulBuilder(
      builder: (BuildContext context, setState) {
        setState(() {
          _setState = setState;
        });
        return Scaffold(
        ...
在我的小部件中,我尝试了这一点,但不起作用:

_setState(() {
   _setState = setState;
});

它不会抛出任何错误。

如果您正在创建一个
无状态
小部件,并且第一个子部件是
有状态生成器
,那么它与创建一个
有状态小部件
是一样的

为了简单起见,您还可以将小部件转换为有状态的,并删除有状态的生成器

如果我需要更新我的无状态小部件的一小部分,而更改事件来自该特定部分的内部,我将仅在情况下使用有状态生成器

有没有办法将setState分配给这样一个全局变量


我建议永远不要将状态/状态设置器/上下文存储为全局变量,因为它会扰乱正常的颤振流。

如果您正在创建一个
无状态
小部件,第一个子部件是
有状态构建器
,这与创建一个
有状态
小部件相同。您还可以将小部件转换为有状态,并删除有状态生成器。为了简单起见,我很少需要更新一个页面,所以我所有的小部件都是无状态的,上面有一些StatefulBuilder。我发现这更容易阅读/理解。但你可能是对的,也许在这个场景中,有一个完整的
statefull
小部件是值得的,而不是headyep,总是向下传递值。如果你填充,你可以创建一个对象作为这些值的集合传递…当然,我会尽快完成,谢谢你是一个好的运动。我们这里需要像你这样的人。祝您今天过得愉快。