【问题标题】:Why is this callback being shown as null in this dart method为什么此回调在此 dart 方法中显示为 null
【发布时间】:2018-06-03 10:39:06
【问题描述】:

所以我在我的颤振应用程序中有这段代码 - 这里函数 refreshState 被方法 foo 调用,该方法传入一个 lambda。但是在调试期间它说回调为空。任何想法为什么会发生这种情况,因为我的回调代码没有被执行。

     void refreshState(Function callback)
        {
            if(isAlive) {
                setState(() {
                    if (callback != null) {
                        callback;
                    }
                });
            }
        }

在我的代码中的某一时刻我正在这样做

 void didPush() {
        foo();
    }

void foo()
    {
        refreshState(() {        //<------------------This lambda is showing up as null in the paramter of refreshState
               isBusy = true;
       });
}

关于为什么这个 lamda 在 refreshState 函数参数中显示为 null 的任何想法?

【问题讨论】:

  • 好吧,我传递它的方式与传递给 setState 的方式一模一样。
  • 检查我的答案。您也可以在调试视图中单击callback 以查看其内容。 () =&gt; 总是意味着函数返回一些东西。

标签: dart flutter


【解决方案1】:

你误解了这里的调试视图。这是一个函数 () 返回 (=&gt;) null。你只是不执行它。

() => ...

这只是一个快捷方式:

() {
  return ...
}

要执行您的callback,您需要添加括号。那将是:

setState(() {
  if (callback != null)
    callback();
});

【讨论】:

  • 是的,成功了。看来我需要睡觉了。我知道我做错了什么:)
猜你喜欢
  • 2018-03-26
  • 1970-01-01
  • 2016-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-30
  • 1970-01-01
  • 2013-01-06
相关资源
最近更新 更多