如何避免 OOM 在 ListView 中使用图像,在 Flutter 中使用 GridView 构建器?

How to avoid OOM using images in ListView, GridView builders in Flutter?

我正在尝试延迟加载任何类型的图像 ListViewGridViewStaggeredGridViewSliverGridSliverList、[=15= 】 建设者。 我正在使用 Image.network.

从网络获取图像

我也在使用 ResizeImage 来减少根据设备屏幕尺寸占用的内存。

图像被放入缓存(这实际上是不需要的)并且在调用 dispose 时从不从内存中清除。

Image.memory 实际上的行为方式相同,在调用 dispose.

时保留对对象的引用而不删除它们

这是我的相关 github issue

如何才能只在内存中保留 ListView 中的可见项?

您可以使用:

PaintingBinding.instance!.imageCache!.maximumSizeBytes = 1024 * 1024 * 50; // 50MB

内存中保留的大小上限。