任何用于长列表的轻量级 Flutter 网络图像插件?(最多加载 500+ 个图像 URL)



所以我想要实现的是:

  1. 显示一长串酒店,每家酒店都有一个图像 URL。所有这些都是从 API 检索的。
  2. 我需要它是平滑/轻量级的,所以在加载和滚动时没有明显的 fps 下降 - 缓存不是必需的,但如果可以在没有内存问题的情况下实现,那就太酷了。(IOS设备总是有这个问题,我相信用iPhone 6+测试过(
  3. 用于显示占位符图像的选项,无论问题如何,它何时加载和加载失败。

我尝试过:

  1. 缓存网络映像(我找到的最常见的解决方案。但是超过100 +图像的内存问题。IOS用户报告应用程序在滚动或加载一段时间后自行崩溃/关闭。在他们的 github 问题中询问,这似乎是常见问题 - 仍然没有修复。在那里尝试了建议。还是无济于事。
  2. 高级网络图像(加载列表时屏幕冻结,可能是因为它尝试一次加载所有图像URL(,也没有占位符图像的选项,以便在发生错误时,而不仅仅是在加载图像时。

有人遇到过类似的情况,并为可接受的用户体验找到了令人满意的解决方案吗?我认为这将是一个足够常见的用例,可以流畅地显示来自网络的一长串图像,但我似乎无法通过这么长时间。请原谅我,但我是一个相对较新的移动开发人员,开始自己学习绳索。任何帮助将不胜感激。提前谢谢你。

您一次缓存了很多东西,由于网络请求+处理(特别是在低端设备上(,这可能会导致意外行为。

您可以先尝试增加ListViewcacheExtent,让它在实际到达元素之前开始加载,并为您提供更流畅的体验。

ListView.builder(
cacheExtent: 1500, // Play with this offset value, by default is 250 pixels
itemCount: items.length,
itemBuilder: (_, __) => CachedNetworkImage(child: YourWidget()),
);

但是,不要过多地增加该值,因为它会迫使用户事先缓存内容,这可能是不必要的,这就是为什么ListView使用惰性构建来按需加载内容的原因。

使用 memCacheHeight: 属性 的 CachedNetworkImage 以及 ListView 的 Cache Extension,它可能会解决问题

最新更新