我查了很多资料,每个人都说使用 FadeImage 或 CachedNetworkimage ,它们有一个属性可以在出现错误时返回 Widget,但就我而言,这些都不起作用,我仍然不知道出了什么问题。 我得到的错误是“HTTP请求失败,statusCode:404,https://storage.gra.cloud.ovh.net/v1/AUTH_4fffdc10a38b40948ec3cab909dd99f3/YeessalStaticProd/7581-3296-2018-03-30.JPG”,我知道这个不可用。 我的图像来自 API,我不知道我获得的图像是否可用。
我认为这种错误可以使用我在这里使用的代码来携带:
Widget getImageCover(double width, double height) {
if (imageCover == null || imageCover!.toString().isEmpty) {
return Image.asset(
'assets/no_image.png',
fit: BoxFit.cover,
width: width,
height: height,
);
}
return Image.network(
imageCover!,
fit: BoxFit.fitWidth,
width: width,
height: height,
loadingBuilder: (context, child, loadingProgress) {
if (loadingProgress == null) return child;
return Center(
child: CircularProgressIndicator(),
);
},
errorBuilder: (context, error, stackTrace) {
return Center(
child: Icon(
Icons.error,
color: Colors.red,
),
);
},
);
// return FadeInImage(
// image: NetworkImage(imageCover!),
// placeholder: AssetImage("assets/no_image.png"),
// imageErrorBuilder: (context, error, stackTrace) {
// return Center(
// child: Icon(
// Icons.error,
// color: Colors.red,
// ),
// );
// },
// fit: BoxFit.fitWidth,
// );
// CachedNetworkImage img = CachedNetworkImage(
// imageUrl: imageCover!,
// fit: BoxFit.cover,
// width: width,
// height: height,
// placeholder: (context, url) => Center(
// child: const CircularProgressIndicator(),
// ),
// errorWidget: (context, url, error) => const Icon(Icons.error),
// );
// return img;
}
正如您在函数注释中看到的那样,我尝试了很多方法来防止此错误,但仍然遇到相同的错误。 我现在真的没有解决办法🫤
更新: 我刚刚注意到,当我使用运行按钮从 IDE 启动应用程序时(这就是所谓的“调试模式”吗?),但是当我直接从手机启动应用程序时(编译后安装的构建应用程序),应用程序崩溃了)预期的行为发生了。
所以它“有效”,但我仍然不知道为什么当我从 IDE 启动时它会崩溃。 一些想法?