Dart中当前文件的路径

时间:2019-03-30 07:11:26

标签: dart

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

a.dart

import './b.dart';

void main() => print(path());

b.dart

import 'dart:io';

String path() => Platform.script.toFilePath();

上面的代码显示了调用脚本 a.dart 的路径。如何更改 b.dart 以获取指向 b.dart 的路径,这样无论我在项目中调用path()的哪个位置,我都将始终获取正确的 b.dart 路径?

1 个答案:

答案 0 :(得分:1)

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

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);
}

结果:

file: /E:/prj/dart_test/bin/main.dart
lime: 4