android - Flutter CachedNetworkImage 不适用于从 playstore 下载的 App,卡在占位符上

标签 android flutter image-loading

我在我的应用程序中使用 CachedNetworkImage,当我在 Android 上调试或发布它时它工作正常,但是当我将 aab 上传到 Play 商店并从 Play 商店下载应用程序时,图像只是卡在占位符上.
这是我在应用程序中使用它的方式。请注意,我使用 Text 小部件作为占位符和错误,以便我可以直观地调试发布版本上的任何问题:

child: Stack(
          children: <Widget>[
            url != null
                ? CachedNetworkImage(
              imageUrl: url,
              errorWidget: (context, url, error) => Text("$error"),
              placeholder: (context, url) => Text("Loading $url"),
              imageBuilder: (context, imageProvider) => Container(
                width: double.infinity,
                height: 150,
                decoration: BoxDecoration(
                  image: DecorationImage(image: imageProvider, fit: BoxFit.fitWidth),
                ),
              ),
            )
                : Container(),
它只是停留在占位符上,看起来像这样
It just stays on the placeholder and looks like this
我在 pubspec 中使用了最新版本的 cached_network_image:
cached_network_image: ^2.4.1
到目前为止,这是我为帮助缩小问题范围所做的尝试:
  • 使用 Image.network(url)而不是 CachedNetworkImage。当我这样做时,图像加载正常,所以我知道这不是互联网或网址的问题。
  • 使用 flutter run --release 在设备上运行发布版本.这工作正常,图像加载正确。
  • 尝试多种设备。我尝试在 Android 8 上使用三星 Galaxy 8,在 Android 11 上使用 Pixel 2xl。两者都适用于调试版本和发布版本,但从 Play 商店下载时却不行。
  • 确保 URL 可公开访问并启用 Internet 权限。该应用程序能够很好地从互联网加载其他内容,并且图像 url 位于公共(public)域中。
  • 最佳答案

    我最终在 github.com/Baseflow/flutter_cached_network_image/issues/497 的 github 问题中找到了解决方案。原来这是 CachedNetworkImage 使用的 sqflite 库的一个 proguard 问题。在他们在库中修复之前,解决方案是将默认的 proguard 文件添加到 build.gradle 文件中:

    buildTypes {
            release {
                signingConfig signingConfigs.release
                minifyEnabled true // Add these lines
                shrinkResources true // Add these lines
                proguardFiles getDefaultProguardFile('proguard-android-optimize.txt') // Add these lines
            }
        }
    
    实际上,我真的很惊讶没有人在我能找到的 SO 上发布关于此的内容,这似乎是图书馆的重大突破性变化。

    关于android - Flutter CachedNetworkImage 不适用于从 playstore 下载的 App,卡在占位符上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65153739/

    相关文章:

    java - 在 android studio 中构建应用程序时出现错误 org.gradle.execution.MultipleBuildFailures

    android - 配置项目 ':firebase_core' 时出现问题

    javascript - 拦截浏览器的图片加载请求

    javascript - 显示 "loading..."图像的好方法是什么?

    flutter - 使用 Dart 在同一引用上连续调用方法的最佳实践

    android - 使用piccaso做图片缓存,支持离线和在线

    java - 获取请求在 Android 设备上不起作用,但它在我的电脑上起作用

    android - 错误类型 3 - 启动 Activity 时出错

    Android objectAnimator 动画真的很慢

    flutter - ListView 内的容器即使有高度也会扩展