gpt4 book ai didi

dart - 如何加载资源文件或包 : URIs in Dart?

转载 作者:行者123 更新时间:2023-12-04 14:49:16 24 4
gpt4 key购买 nike

有一种方法可以获取当前正在执行的脚本的路径,然后找到相对于该位置的资源文件,但不能保证发布应用程序时目录结构相同。

Dart 是否提供了一种通用方式来加载资源(文件、数据等),这种方式也适用于 pub runpub global run ?

换个方式问,我如何动态加载package:的内容URI,在 Dart 应用程序中,在运行时?

最佳答案

更新
resource包已发布。

更新
这是正在重新设计。 Resource类将被移动到一个包。

原装

有一个新的Resource Dart 中的类(使用 Dart VM version: 1.12.0-edge.d4d89d6f12b44514336f1af748e466607bcd1453 (Fri Aug 7 19:38:14 2015) 测试)

resource_example/lib/resource/sample.txt

Sample text file.

资源示例/bin/main.dart
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

打印
Sample text file.

执行
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());
}

有关更多详细信息,请参阅
- http://blog.sethladd.com/2015/08/dynamically-load-package-contents-with.html
- https://codereview.chromium.org/1276263002/

关于dart - 如何加载资源文件或包 : URIs in Dart?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31913674/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com