任何用于长列表的轻量级Flutter Network Image插件吗? (最多可加载500多个图片网址)

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

所以我想要实现的是:

  1. 显示一长串酒店,每个酒店只有一个图片网址。所有这些都是从API检索的。
  2. 我需要使其平滑/轻巧,因此在加载和滚动时没有明显的fps下降-不需要缓存,但是如果可以在没有内存问题的情况下实现缓存就很酷。 (我相信,使用iphone 6+进行测试的IOS设备始终会出现此问题)
  3. 用于显示占位符图像的选项,用于显示何时加载和加载失败而与问题无关。

我尝试过的:

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

任何人都遇到过类似情况,并且找到了可接受的UX的令人满意的解决方案?我以为这将是一个足够普遍的用例,可以平滑地显示网络中的一长串图像,但是我似乎无法这么长时间地解决这个问题。请原谅,但我是一个相对较新的移动开发人员,开始独自学习绳索。任何帮助将非常感激。预先谢谢你。

flutter
1个回答
0
投票

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

您可以先尝试从cacheExtent中增加ListView,以使其在实际到达元素之前开始加载,并为您提供更流畅的体验。

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

但是,不要将该值增加太多,因为这会迫使用户事先缓存可能不必要的内容,这就是ListView使用延迟构建按需加载内容的原因。

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