如何解决如何访问包中的资产
最初的问题来自颤抖issue 32799
我开发了一个dart程序包,我需要在运行时加载一些json文件,但是当我这样做时会出现错误。加载图片没问题,代码:
void main() {
Future<void> loadAsset() async {
String value = await rootBundle
.loadString('lib/src/assets/JsonConfig/test.json');
//Image img = Image.asset('lib/src/assets/default-logo.png');
}
test('adds one to input values',() async {
await loadAsset();
});
}
我的pubspec.yaml文件是这样的:
flutter:
# To add assets to your package,add an assets section,like this:
assets:
- lib/src/assets/default-logo.png
- lib/src/assets/JsonConfig/test.json
- lib/src/assets/
解决方法
要从包中加载资产,您应为密钥添加前缀'packages/<package_name>/'
,以使其生效。
例如AssetImage
的行为
/// The name used to generate the key to obtain the asset. For local assets
/// this is [assetName],and for assets from packages the [assetName] is
/// prefixed 'packages/<package_name>/'.
String get keyName => package == null ? assetName : 'packages/$package/$assetName';
因此,为密钥添加前缀'packages/<package_name>/'
可以在上面的演示中使用:
String value = await rootBundle
.loadString('packages/<package_name>/lib/src/assets/JsonConfig/test.json');
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。