Flutter-更改setState内部或外部的变量?

时间:2019-02-11 19:13:09

标签: flutter

在Flutter Widget中更改状态时,这样做之间有什么区别

_variable1 = true;
variable2 = 'abc';
setState(() => {});

或这个

setState(() => {
    _variable1 = true;
    variable2 = 'abc';
});

文档中的几乎所有示例都使用最后一个,但我没有发现任何实际差异。在这两种情况下都设置了变量并更新了状态,但是我想知道是否存在一种情况,如果使用一种或另一种,则无法按预期工作。

4 个答案:

答案 0 :(得分:1)

否,两种情况下的结果都是相同的,我在许多小部件中都互换使用了它们,结果始终相同。

答案 1 :(得分:1)

根据抖动docs,指出:

  

通常建议仅将setState方法用于   包装对状态的实际更改,而不是可能的任何计算   与更改相关联。

主要我认为这是出于可读性目的,即,您需要将setState的主体放入新的窗口小部件更改中,而不必将其与您的计算混合在一起作为第一个方法。您的问题确实如此。

答案 2 :(得分:1)

已经发布here这个问题。

这是对流,没关系,但是,将所有更改包装在setState函数中是很好的做法。但是在两种情况下结果都是相同的。

答案 3 :(得分:1)

我在某处读到一个空的setState是一种“代码味道”,因为回调的主体应指出setState的原因。