null 和 ()=>null 有什么区别?

What's the difference between null and ()=>null?

我是飞镖新手,对null_closures感到困惑。

例如:

void _test1({VoidCallback callback}) {
  callback();
}

当我用作时会崩溃:

_test1(callback: null);

但效果很好:

_test1(callback: () => null);

为什么?

_test1(callback: null);

在这种情况下,callbacknull。尝试通过访问属性(有一些例外)或调用其上的方法来取消引用 null 将导致异常。 (在大多数其他语言中,这将是一个空指针异常。在 Dart 中,null 是一个特殊对象(类型为 Null),因此尝试调用它的方法通常会抛出一个 NoSuchMethod 错误。)

_test1(callback: () => null);

在这种情况下,callback 函数Function 类型的对象)returns null 调用该函数时。