获取Dart中的脚本路径(PHP中的模拟_DIR__常量)

获取Dart中的脚本路径(PHP中的模拟_DIR__常量),dart,Dart,如何在Dart中获取当前脚本(非可执行)的路径 比如说。在PHP中,我们有\uuuuu DIR\uuuu常量,它引用脚本目录。如果我们有两个脚本:/run.php和/lib/test.php;在/run.php中,我们只包含/lib/test.php。在/lib/test.php输出\uuuuu DIR\uuuuu中编码。如果我们运行/run.php,那么我们将得到输出/path/to/lib/test.php 在Dart中,我们可以获取当前运行脚本的目录,但如何获取当前脚本的目录呢 我需要这个

如何在Dart中获取当前脚本(非可执行)的路径

比如说。在PHP中,我们有
\uuuuu DIR\uuuu
常量,它引用脚本目录。如果我们有两个脚本:
/run.php
/lib/test.php
;在
/run.php
中,我们只包含
/lib/test.php
。在/lib/test.php输出\uuuuu DIR\uuuuu中编码。如果我们运行
/run.php
,那么我们将得到输出
/path/to/lib/test.php

在Dart中,我们可以获取当前运行脚本的目录,但如何获取当前脚本的目录呢

我需要这个,因为我试图从库中获取
json
-文件(放在库中)


我怎样才能做到这一点?

您已经说过,当您运行
test.dart
时,当前目录是
/path/to/lib/tests
。因此,您应该能够使用相对路径打开
rules.json
。路径是
。/rules/rules.json
(当然也可以是
。\rules\rules.json
在Windows上,您可以从中获取分隔符)


或者,显然,您可以从中获取当前脚本(如果平台支持)的文件名。

当您要引用
lib
目录中的文件时,可以使用包相对路径

packages/my_package/lib/rules/rules.json
如果要引用另一个文件的文件不在顶级目录中,如
web
示例
bin
测试
。。。在向下浏览packages目录之前,您必须导航到顶部。
这种方法适用于当前应用程序包的
lib
目录中的每个文件到每个目标文件,或在
pubspec.yaml
中声明为依赖项的任何包

。/packages/my_package/lib/rules/rules.json
pub build
在您导航不够时提供提示

例子 包含main的文件位于
游乐场/bin/script/script\u路径/main.dart

test.json
文件位于
playway/lib/some\u json

导入'dart:io'作为io;
main(){
Uri filePath=io.Platform.script.resolve(
“../../../packages/playdy/some_json/test.json”);
var file=new io.file.fromUri(文件路径);
var content=file.readAsString()。然后((c){
印刷品(c);
});
}

在服务器上,您不需要向上导航(至少目前是这样),因为每个目录都有一个指向
packages
目录的符号链接,但是有计划要去掉符号链接,
dart2art
可能像
dart2js
一样工作,并且可能需要像在浏览器应用程序中一样首先导航到上。

如果你在一个flatter项目中,试图加载静态资产,例如json、txt、图像:使用中提到的rootBundle


非常感谢你!从你的回答中,我为你自己学到了一些新的时刻,这对我将来会有很大帮助。@t-j-crowder,非常感谢你。我尝试使用相对路径,但犯了一个错误(而不是
编写了
),无法找到它。你的回答使我大开眼界。
import 'dart:async' show Future;
import 'package:flutter/services.dart' show rootBundle;

Future<String> loadAsset() async {
  return await rootBundle.loadString('assets/config.json');
}
flutter:
  assets:
    - assets/config.json