FlutterError:无法加载资产
这是我的应用程序的文件夹结构
.idea.vscode
android
build
fonts
Oxygen-Bold.tff
Oxygen-Light.tff
Oxygen-Regular.tff
images
pizza0.png
pizza1.png
ios
lib
ui
home.dart
main.dart
test
.gitignore
.metadata
.packages
app_widgets.iml
pubspec.lock
pubspec.yaml
README.md
在我的pubspec.yaml文件中,我像这样加载字体和素材资源
flutter:uses-material-design: true
assets:
- images/pizza0.png
- images/pizza1.png
fonts:
- family: Oxygen
fonts:
- asset: fonts/Oxygen-Regular.ttf
- asset: fonts/Oxygen-Bold.ttf
weight: 700
- asset: fonts/Oxygen-Light.ttf
weight: 300
我没有对该yaml文件犯任何错误,运行“ flutter package get”给出的退出代码为0。
在我的home.dart中,我有以下课程:
class PizzaImageWidget extends StatelessWidget { @override
Widget build(BuildContext context) {
AssetImage pizzaAsset = AssetImage('images/pizza0.png');
Image image = Image(image: pizzaAsset, width: 400, height: 400);
return Container(
child: image,
);
}
}
我在其他地方使用的是为了显示图像(省略了代码):
), PizzaImageWidget(),
],
建立没有错误。Flutter Doctor -v没有给出任何错误,Flutter Analyze
-v也没有给出任何错误。.apk似乎可以很好地构建,但是当应用程序在手机上打开时,在asset_bundle.dart中出现以下错误:
发生异常。FlutterError(无法加载资源:images / pizza0.png)
此类在asset_bundle.dart文件中引发了错误:
/// An [AssetBundle] that loads resources using platform messages.class PlatformAssetBundle extends CachingAssetBundle {
@override
Future<ByteData> load(String key) async {
final Uint8List encoded = utf8.encoder.convert(Uri(path: Uri.encodeFull(key)).path);
final ByteData asset =
await BinaryMessages.send('flutter/assets', encoded.buffer.asByteData());
if (asset == null)
throw FlutterError('Unable to load asset: $key');
return asset;
}
}
Pizza0.png文件以及pizza1.png文件都会发生这种情况。这些文件在树结构中都是可见的,在Windows资源管理器中都与VS
Code中一样。字体资产加载没有问题。
这是运行Flutter Run -v时得到的输出:
414:14)[+1 ms] I / flutter(6489):#3 ImageProvider.resolve ..(package:flutter
/ src / painting / image_provider.dart:267:86)[+4 ms] I / flutter(6489 ):#4
ImageCache.putIfAbsent(package:flutter / src / painting /
image_cache.dart:143:20)[+3 ms] I / flutter(6489):#5
ImageProvider.resolve。(package:flutter / src / painting /
image_provider.dart:267:63)[+3 ms] I /
flutter(6489):(从dart:async软件包中删除了8帧)[+1 ms] I / flutter(6489) :[+1毫秒] I /
flutter(6489):图片提供者:AssetImage(bundle:null,名称:“ images / pizza0.png”)[+3毫秒]
I / flutter(6489):图片密钥:AssetBundleImageKey(bundle
:PlatformAssetBundle#20fc8(),名称:“ images / pizza0.png”,[+1毫秒] I /
Flutter(6489):比例尺:1.0)[+2毫秒] I / flutter(6489):
回答:
您应该考虑缩进 assets
flutter: assets:
- images/pizza1.png
- images/pizza0.png
更多细节:
flutter:[2 whitespaces or 1 tab]assets:
[4 whitespaces or 2 tabs]- images/pizza1.png
[4 whitespaces or 2 tabs]- images/pizza0.png
以上是 FlutterError:无法加载资产 的全部内容, 来源链接: utcz.com/qa/421982.html