如何防止 flutter 应用因无法加载 NetworkImage 而崩溃?

问题描述 投票:0回答:1

我查了很多资料,每个人都说使用 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 启动时它会崩溃。 一些想法?

flutter error-handling http-status-code-404 http-error flutter-image
1个回答
0
投票

我终于找到了这个问题的解决方案,我只需更新 Vs code 的断点设置即可。 enter image description here

我只需取消选中“_network_image_io.dart”即可,一切正常。

感谢Angel Roma的贡献。

© www.soinside.com 2019 - 2024. All rights reserved.