在Flutter Widget中更改状态时,这样做之间有什么区别
_variable1 = true;
variable2 = 'abc';
setState(() => {});
或这个
setState(() => {
_variable1 = true;
variable2 = 'abc';
});
文档中的几乎所有示例都使用最后一个,但我没有发现任何实际差异。在这两种情况下都设置了变量并更新了状态,但是我想知道是否存在一种情况,如果使用一种或另一种,则无法按预期工作。
答案 0 :(得分:1)
否,两种情况下的结果都是相同的,我在许多小部件中都互换使用了它们,结果始终相同。
答案 1 :(得分:1)
根据抖动docs,指出:
通常建议仅将setState方法用于 包装对状态的实际更改,而不是可能的任何计算 与更改相关联。
主要我认为这是出于可读性目的,即,您需要将setState
的主体放入新的窗口小部件更改中,而不必将其与您的计算混合在一起作为第一个方法。您的问题确实如此。
答案 2 :(得分:1)
已经发布here这个问题。
这是对流,没关系,但是,将所有更改包装在setState函数中是很好的做法。但是在两种情况下结果都是相同的。
答案 3 :(得分:1)
我在某处读到一个空的setState是一种“代码味道”,因为回调的主体应指出setState的原因。