我有一个方法在发生错误时执行默认方法,只是将错误转储到用户的计算机屏幕:
void onError(FlutterErrorDetails details) => FlutterError.dumpErrorToConsole(details);
现在,邀请用户覆盖此方法,但是当时机到来并且确实发生错误时,我想知道该方法是否被覆盖。我无法弄清楚如何做到这一点。
在Dart中,函数是第一类对象,因此没有办法在类定义它时“记录”方法的内容,以及在实例化类对象时它是什么?就像是:
static final FlutterExceptionHandler _dumpError = (FlutterErrorDetails details) => FlutterError.dumpErrorToConsole(details);
if (onError == _dumpError) {
_prevOnError(details);
} else {
onError(details);
}
当然,现在上述方法不起作用。 onError不等于_dumpError。我甚至试过这个:
static final FlutterExceptionHandler _dumpError = FlutterError.dumpErrorToConsole(details);
void onError(FlutterErrorDetails details) => _dumpError;
现在这实际上就是这样,当发生错误时,onError()会触发并将错误转储到控制台。然而,它并不完全正确,因为比较(==)将再次返回false。我如何使它成立?:onError == _dumpError
你认为有没有办法做到这一点?有没有办法比较两个函数的'内容'?
我不知道。我现在正抓住稻草。
干杯。
“我想知道这个方法是否被覆盖了。但我无法弄清楚如何做到这一点”。 OOP的重点是你不应该关心,甚至不知道是否发生了这种情况。你的实际用例是什么?