flutter中如何获取执行代码的归属类(class)、归属方法(method)、归属文件(file)、归属代码行(line) ?

tasin
2020-10-27 15:51

flutter/dart中可以通过以下方式获取当前执行代码所在的类、方法和代码行,参考以下代码示例:

import 'package:stack_trace/stack_trace.dart';

void main() {
  print(__LINE__); //获取归属行
  print(__METHOD__);//获取归属方法
  print(__FILE__);//获取归属文件
  new Foo();
}

class Foo {
  Foo() {
    print(__CLASS__);//获取归属类
  }
}

String get __CLASS__ {
  var frames = new Trace.current().frames;//调用栈
  if(frames.length > 1) {
    var member = frames[1].member;
    var parts = member.split(".");
    if(parts.length > 1) {
      return parts[1];
    }
  }

  return null;
}


String get __METHOD__ {
  var frames = new Trace.current().frames;
  if(frames.length > 1) {
    return frames[1].member;
  }

  return null;
}

String get __FILE__ {
  var frames = new Trace.current().frames;
  if(frames.length > 1) {
    return frames[1].uri.path;
  }

  return null;
}

int get __LINE__ {
  var frames = new Trace.current().frames;
  if(frames.length > 1) {
    return frames[1].line;
  }

  return null;
}

 

全部评论