为什么此回调在此dart方法中显示为null

时间:2018-06-03 10:39:07

标签: dart flutter

所以我在我的flutter应用程序中有这个代码 - 这里函数refreshState由传递lambda的方法foo调用。但是在调试期间它说回调为null。由于这个我的回调代码没有被执行的任何想法为什么会发生这种情况。

     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的任何想法?

1 个答案:

答案 0 :(得分:1)

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

() => ...

这只是以下的捷径:

() {
  return ...
}

要执行callback,您需要添加parantheses。那将是:

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