Flutter & Dart:如何检查/知道哪个类调用了一个函数?

时间:2021-04-24 04:48:54

标签: flutter dart logging

我想知道哪个类调用了特定函数。我一直在查看文档,但没有成功。我已经知道如何get the name of a class,但这与我正在寻找的不同。我已经找到了 something related for java 但对于飞镖我还没有。也许我错过了什么。

比如说,我有一个像这样的打印功能:

class A {
  void printSomethingAndTellWhereYouDidIt() {
    // Here I would also include the class where this function is 
    // being called. For instance:
    print('you called the function at: ...'); 
    //This dot-dot-dot is where maybe should go what I'm looking for.
  }
}

class B {
  A a = A();

  void test() {
    a.printSomethingAndTellWhereYouDidIt();
  }
}

输出应该是这样的:

you called the function at: B

如果有什么方法可以实现这一点,请告诉我。背后的想法是将其与记录器一起使用,例如 the logging package。提前致谢。

1 个答案:

答案 0 :(得分:1)

您可以随时使用 StackTrace.current 获取堆栈跟踪,即发生异常时打印的对象。这包含导致调用的调用链的行号,应提供您需要的信息。

class A {
  void printSomethingAndTellWhereYouDidIt() {
    print(StackTrace.current);
  }
}

class B {
  A a = A();

  void test() {
    a.printSomethingAndTellWhereYouDidIt();
  }
}

如果您这样做是为了调试目的,您还可以在 printSomethingAndTellWhereYouDidIt 中设置断点以检查它是从哪里调用的。