如何在Dart中加载资源文件或包:URI?
有一种方法可以获取当前正在执行的脚本的路径,然后找到与此位置相关的资源文件,但不能保证在发布应用程序时目录结构是相同的 Dart是否提供了一种加载资源(文件、数据等)的通用方法,这种方法也适用于如何在Dart中加载资源文件或包:URI?,dart,Dart,有一种方法可以获取当前正在执行的脚本的路径,然后找到与此位置相关的资源文件,但不能保证在发布应用程序时目录结构是相同的 Dart是否提供了一种加载资源(文件、数据等)的通用方法,这种方法也适用于发布运行或发布全局运行 问另一个问题,如何在运行时在Dart应用程序中动态加载包的内容:URI?更新 该方案已公布 更新 这是在返工。资源类将被移动到包中 原创 Dart中有一个新的资源类(使用Dart虚拟机版本:1.12.0-edge.D4D89D6f16lang1024 2B44514336F1AF7
发布运行
或发布全局运行
问另一个问题,如何在运行时在Dart应用程序中动态加载包的内容:
URI?更新
该方案已公布
更新
这是在返工。资源
类将被移动到包中
原创
Dart中有一个新的资源
类(使用Dart虚拟机版本:1.12.0-edge.D4D89D6f16lang1024 2B44514336F1AF748E46607BCD1453进行测试)(2015年8月7日星期五19:38:14)
)
resource\u示例/lib/resource/sample.txt
Sample text file.
main() async {
var resource = const Resource('package:resource_example/resource/sample.txt');
print(await resource.readAsString());
// or for binary resources
// print(await resource.readAsBytes());
}
资源\u示例/bin/main.dart
Sample text file.
main() async {
var resource = const Resource('package:resource_example/resource/sample.txt');
print(await resource.readAsString());
// or for binary resources
// print(await resource.readAsBytes());
}
执行
dart bin/main.dart
pub global activate -spath .
pub global run resource_example:main
印刷品
Sample text file.
执行
dart bin/main.dart
pub global activate -spath .
pub global run resource_example:main
还打印
Sample text file.
也可以将变量的内容作为资源传递。例如,在单元测试中传递模拟资源可能很方便
const sampleText = "Sample const text";
main() async {
var uriEncoded = sampleText.replaceAll(' ', '%20');
var resource = new Resource('data:application/dart;charset=utf-8,$uriEncoded');
print(await resource.readAsString());
}
也支持任意文件或http URI,但在使用pub-run
或pub-global-run
时,这可能不起作用
main() async {
var uri = new Uri.file('lib/resource/sample.txt');
var resource = new Resource(uri.toString());
print(await resource.readAsString());
}
有关更多详细信息,请参见-
-当您从pub.dartlang.org全局激活一个包时,它是否有效?一个有趣的问题。我还没有出版一本可以试用的书,只是试了一下。尚未工作:
无法解析位于的base的包位置file:///Users/sethladd/.pub-cache/global_packages/resourcetest/bin/resourcetest.dart.snapshot