Dart中当前文件的路径

rid*_*rid 6 dart

如何获取当前文件的路径?(类似于__FILE__PHP 中的常量或 C 中的宏)例如:

a.飞镖:

import './b.dart';

void main() => print(path());
Run Code Online (Sandbox Code Playgroud)

b.飞镖:

import 'dart:io';

String path() => Platform.script.toFilePath();
Run Code Online (Sandbox Code Playgroud)

上面的代码打印了调用脚本a.dart的路径。我怎样才能改变b.dart获得路径b.dart代替,这样无论我打电话path()从项目中,我总能得到正确的路径b.dart?

mez*_*oni 5

这可能并不适用于所有情况(我指的是平台和可执行格式),但它就像剥梨一样简单:

import 'package:stack_trace/stack_trace.dart';

void main(List<String> args) {
  final frame = _frame(); // <==== /E:/prj/dart_test/bin/main.dart at line 4
  print('file: ${frame.uri.path}');
  print('lime: ${frame.line}');
}

Frame _frame() {
  return Frame.caller(1);
}
Run Code Online (Sandbox Code Playgroud)

结果:

file: /E:/prj/dart_test/bin/main.dart
lime: 4
Run Code Online (Sandbox Code Playgroud)