我是 dart 新手,对 null_closures 感到困惑。
例如:
void _test1({VoidCallback callback}) {
callback();
}
当我用作时会崩溃:
_test1(callback: null);
但效果很好:
_test1(callback: () => null);
为什么?
答案 0 :(得分:3)
_test1(callback: null);
在这种情况下,callback
是 null
。试图通过访问属性(有一些例外)或通过调用它的方法来取消引用 null
将导致异常。 (在大多数其他语言中,这将是一个空指针异常。在 Dart 中,null
是一个特殊对象(类型为 Null
),因此尝试对其调用方法通常会抛出一个 {{ 1}} 错误。)
NoSuchMethod
在这种情况下,_test1(callback: () => null);
是一个 函数(callback
类型的对象),当该函数返回时,它返回 Function
被调用。