Flutter-SetState方法的参数用法

时间:2019-11-26 20:33:34

标签: flutter

我今天才开始尝试Flutter。我正在关注官方教程:https://flutter.dev/docs/development/ui/interactive(此问题涉及步骤3)

我了解有状态小部件的概念以及对setState()的需求,但我不了解其参数(功能)的重点。我们为什么要传递一个函数呢? setState不能是无参数的,然后我们只需在调用setState之前就将状态更改代码(我们将放置在该参数函数上的代码)放进去?

所以基本上我的问题是:两者之间有什么区别

A)setState((){myCounter ++;});

B)myCounter ++; setState((){});

Obs:在上面链接的教程中,如果我以任何一种方式执行,结果都是(或似乎是)相同。

2 个答案:

答案 0 :(得分:0)

这里提供了回调函数,以确保对模型所做的更改是同步的,并且只应设置UI所需的内容。 这样可以确保在框架刷新UI之前已对更改进行了设置,因为您无法对回调执行异步工作,并且结果是可以预期的。

如果必须进行大量计算,则应在调用setState之前进行。

在您的示例中,它是相同的,因为它只是一个简单的变量增量,但是在实践中,如果您有繁重的操作或异步操作并希望运行这些操作。如果允许,回调中的内容可能会对性能产生影响。

查看官方文档以获取更多示例:https://api.flutter.dev/flutter/widgets/State/setState.html

答案 1 :(得分:0)

我也有同样的疑问,我查了setState的代码,仍然没有找到方法参数的特殊用法。所以我觉得setState方法参数的设计不合理,让setState做一个无参数函数比较好理解:

myCounter++; 
setState();