如何在重写方法时确定Dart?

问题描述 投票:1回答:1

我有一个方法在发生错误时执行默认方法,只是将错误转储到用户的计算机屏幕:

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

你认为有没有办法做到这一点?有没有办法比较两个函数的'内容'?

我不知道。我现在正抓住稻草。

干杯。

dart flutter
1个回答
0
投票

“我想知道这个方法是否被覆盖了。但我无法弄清楚如何做到这一点”。 OOP的重点是你不应该关心,甚至不知道是否发生了这种情况。你的实际用例是什么?

© www.soinside.com 2019 - 2024. All rights reserved.