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

Raj*_*war 2 dart flutter

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

     void refreshState(Function callback)
        {
            if(isAlive) {
                setState(() {
                    if (callback != null) {
                        callback;
                    }
                });
            }
        }
Run Code Online (Sandbox Code Playgroud)

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

 void didPush() {
        foo();
    }

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

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

cre*_*not 5

您误解了此处的调试视图。它是一个()返回 ( =>)的函数null。你只是不执行它。

() => ...
Run Code Online (Sandbox Code Playgroud)

这只是一个快捷方式:

() {
  return ...
}
Run Code Online (Sandbox Code Playgroud)

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

setState(() {
  if (callback != null)
    callback();
});
Run Code Online (Sandbox Code Playgroud)