假设 global_bin ,一个通过
激活的包&#s / bin文件pub global activate global_bin
我需要 global_bin 在位于执行它的目录中的包中搜索包含类定义的文件,然后实例化它。
即。 :
// $HOME/package/lib/class.dart
class Clazz{
int number = 42;
}
然后在命令行中:
cd $HOME/package
global_bin --echo number
# 42
答案 0 :(得分:3)
您无法在同一个隔离中加载任意库。需要探索的两件事:
1)使用https://api.dartlang.org/stable/1.23.0/dart-isolate/Isolate/spawnUri.html生成一个新的分离 - 你给spawnUri一个新的入口点,它可以在任何文件中,并加载新的dart代码。
2)听起来你正在寻找加载未准备好在隔离区中运行的代码 - 没有自己的“主”方法。所以你必须生成代码。在您的示例中,您将需要生成导入Clazz的代码,导入将按名称查找符号的引擎,然后运行它:
import 'package:foo/class.dart';
import 'package:global_bin/runner.dart' as runner;
void main() {
runner.run();
}
现在你的runner.dart可以使用镜像来查找class.dart并检查它。
最后,为了实际查找文件 - 你可以使用dart的标准文件函数,即dart:io。