这是我的应用程序的文件夹结构
.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
我没有得到这个 pubspec.yaml
的任何错误,运行 flutter packages get
得到的退出代码为0。
在我家,我有以下课程:
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(),
],
建筑物没有出错。颤振医生 -v 不会给出任何错误,颤振分析 -v 也不会。那个。Apk 看起来构建得很好,但是当应用程序在我的手机上打开时,我在 asset _ bundle 中得到以下错误。飞镖:
发生异常。 FlutterError (无法加载资产: 图片/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 文件都是如此。这些文件可以在树结构中看到,就像 VS 代码中的文件资源管理器一样。加载字体资产没有问题。
这是我在运行 Flutter Run-v 时得到的输出:
[ + 1068ms ] I/flutter (6489) : 由图像资源捕捉到的普通噪声 毕业典礼上,毕业典礼上,毕业典礼上,毕业典礼上,毕业典礼上,毕业典礼上,毕业典礼上,毕业典礼上,毕业典礼上,毕业典礼上,毕业典礼上,毕业典礼上,毕业典礼上,毕业典礼上,毕业典礼上,毕业典礼上,毕业典礼上,毕业典礼上,毕业典礼上,毕业典礼 Ms ] I/flutter (6489) : 抛出以下断言来解析 图像编解码器: [ + 2 ms ] I/flutter (6489) : 无法加载资源: 图片/pizza0.png [ + 2 ms ] I/flutter (6489) : [ + 1 ms ] I/flutter ( 6489) : 当抛出异常时,这是堆栈: [ + 2 ms ] I/flutter (6489) : # 0 PlatformAssetBundle.load (package: flutter/src/services/asset _ bundle. dart: 221:7)[ + 1 ms ] I/flutter (6489) : [ + 1 ms ] I/flutter ( 6489) : # 1 AssetBundleImageProvider. _ loadAsync (包装: flutter/src/畫/image _ Provider. dart: 429:44)[ + 1 ms ] I/flutter (6489) : [ + 1 ms ] I/flutter ( 6489) : # 2 AssetBundleImageProvider.load (包装: flutter/src/畫/image _ Provider. dart: 414:14)[ + 1 ms ] I/flutter (6489) : # 3 ImageProvider.Resol. . . (包: flutter/src/畫/image _ Provider. dart: 267:86)[ + 4 ms ] I/flutter (6489) : # 4 ImageCache.putIfAbsent (包: flutter/src/畫/image _ cache. dart: 143:20)[ + 3 ms ] I/flutter (6489) : # 5 ImageProvider. (包: flutter/src/畫/image _ Provider. dart: 267:63)[ + 3 ms ] I/flutter (6489) : (省略了包省略号中的8帧)[ + 1 I/flutter (6489) : [ + 1 ms ] I/flutter (6489) : 图片提供商: AssetImage (bundle: null,name: “ images/pizza0.png”)[ + 3 ms ] I/flutter (6489) : 图像键: AssetBundleImageKey (bundle: PlatformAssetBundle # 20fc8() ,名称: “ images/pizza0.png”,[ + 1 ms ] I/flutter (6489) : 刻度: 1.0)[ + 2 ms ] I/flutter (6489) : 一般来说,一般来说,一般来说,一般来说,一般来说,一般来说,一般来说,一般来说,一般来说,一般来说,一般来说,一般来说,一般来说,一般来说,一般来说,一般来说,一般来说,一般来说,一般来说,一般来说,一般来说,一般来说,一般来说,一般来说,一般来说,一般来说,一般来说,一般来说,一般来说,一般来说,一般来说,一般来说,一般来说,