这是我正在开发的音乐播放器应用程序。我正在使用音频播放器插件来收集所有本地文件。这是我用于显示缩略图的代码
...Container(
margin: EdgeInsets.symmetric(horizontal: 40, vertical: 60),
decoration: BoxDecoration(
shape: BoxShape.circle,
color: dark,
image: DecorationImage(
image: loadThumbNail(File(path)),
fit: BoxFit.fitHeight,
),
),
),...
...ImageProvider loadThumbNail(File f) {
ImageProvider img;
try {
img = f.existsSync() ? FileImage(f) : AssetImage(path);
} catch (e) {
img = AssetImage(path);
}
return img;
}
代码有效。如果缩略图不存在,它将加载默认缩略图。 问题似乎只出在一个方面。 这是怎么回事?
这是错误消息
════════ Exception caught by image resource service ════════════════════════════════════════════════
The following _Exception was thrown resolving an image codec:
Exception: Could not instantiate image codec.
When the exception was thrown, this was the stack:
#0 _futurize (dart:ui/painting.dart:4419:5)
#1 instantiateImageCodec (dart:ui/painting.dart:1722:10)
#2 PaintingBinding.instantiateImageCodec (package:flutter/src/painting/binding.dart:88:12)
#3 FileImage._loadAsync (package:flutter/src/painting/image_provider.dart:864:24)
<asynchronous suspension>
...
Path: /storage/emulated/0/Android/data/com.android.providers.media/albumthumbs/1572310783227
════════════════════════════════════════════════════════════════════════════════════════════════════
有趣的是,该应用程序不会崩溃,也没有出现红屏。缩略图区域将变为空白。我应该就这样离开还是进一步挖掘?
我就这样放弃了。我尝试使用 onError 属性,它确实有效, 但是,即使对于具有有效 缩略图。
问题是您提供的路径不是导致发生此错误的图像路径,如果您使用的是发布应用程序,则不会显示红屏 如果资产丢失,Flutters 应用程序不会崩溃。如果您希望修复它,您可以提供更多代码,也可以保持原样。