【问题标题】:Need explanation for setState() function in FlutterFlutter 中的 setState() 函数需要解释
【发布时间】:2021-07-06 06:31:43
【问题描述】:

我很困惑为什么我们必须在 setState 中放置一个函数来更新变量。我可以改为更新变量并调用 setState。我从https://flutter.dev/docs/development/ui/widgets-intro修改了代码

class _CounterState extends State<Counter> {
  int _counter = 0;

  void _increment() {
    setState(() {
      _counter++;
    });
  }

相反,我想这样做

class _CounterState extends State<Counter> {
  int _counter = 0;

  void _increment() {
    _counter++;
    setState(() {
    });
  }

这仍然有效,现在我在想为什么让 setState() 有一个函数作为参数,而不是 setState 不能有任何参数,如setState();,我们只会在更新变量后调用它。

【问题讨论】:

    标签: flutter flutter-state


    【解决方案1】:

    你会在official docs找到答案:

    提供的回调会立即同步调用。 [...] 如果您只是直接更改状态而不调用 setState,则框架可能不会安排构建,并且此子树的用户界面可能不会更新以反映新状态。

    我认为问题是如果你在更改状态后调用setState((){});,UI和状态对象将在短时间内不同步。

    【讨论】:

      【解决方案2】:

      它不能在大项目中正常运行。所以你的问题的答案是这样的,如果你不使用setState(() =&gt; {});,如果你改变任何变量的值,你的屏幕将无法呈现。所以如果你想在屏幕中改变变量的值时生效,你必须使用setState(() =&gt; {});

      【讨论】:

      • 我在第二部分的 setState 中传递了一个空函数,该函数有效,即 UI 得到更新。另外,我的问题不是如何更新 UI。
      猜你喜欢
      • 1970-01-01
      • 2021-11-24
      • 2011-09-28
      • 1970-01-01
      • 1970-01-01
      • 2021-12-31
      • 2012-08-25
      • 2014-06-24
      • 1970-01-01
      相关资源
      最近更新 更多