问题描述
最初的问题来自颤抖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');