gpt4 book ai didi

dart - 当方法被覆盖时如何在 Dart 中确定?

转载 作者:IT王子 更新时间:2023-10-29 07:04:29 27 4
gpt4 key购买 nike

我有一个方法可以在发生错误时执行默认方法,并简单地将错误转储到用户的计算机屏幕上:

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 的要点是您永远不需要关心,甚至不需要知道是否发生过这种情况。您的实际用例是什么?

关于dart - 当方法被覆盖时如何在 Dart 中确定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54657963/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com