小编MG *_*ine的帖子

在 ListView 中显示图像时内存不足

好的,所以我想从 LinearView 获取项目并获得它们的可见性,这样我就可以释放隐藏项目的内存。

有可能这样做吗?你还有其他建议吗?

所以基本上,我想显示从 URL 动态下载的图像流,我希望它们在 ListView 中,这样人们就可以滚动它们,但是如果我们只是使用像这样的普通构建器加载 ListView,

ListView lvb = new ListView.builder(
    cacheExtent: 1.0,
    itemBuilder: (BuildContext context, int index) {
      return new ImageView(MyApp.imageLinks.values.elementAt(index));
    },
);
Run Code Online (Sandbox Code Playgroud)

它会一次下载所有项目,设备会耗尽内存。所以我想我只是释放图像占用的内存,然后允许用户加载更多图像而不必担心内存。

此外,我希望一次只加载 5 张图像,因此将显示 1 张,上方 2 张和下方 2 张,以便更快、更流畅地滚动。

我的问题:

  • 有没有办法确定项目是否被绘制(在视图中)?
  • 我可以限制我想要在 LinearView 中有多少 ImageViews,但保持滚动能力。

编辑:承诺的 ImageView 类

class ImageView extends StatelessWidget {
  String url;

  ImageView([String url]) {
    if (url != null) {
      this.url = url;
    }
    print("New image");
  }

  @override
  Widget build(BuildContext context) {
    FractionallySizedBox fsb;
    if (url != null) …
Run Code Online (Sandbox Code Playgroud)

android dart flutter

4
推荐指数
1
解决办法
3644
查看次数

标签 统计

android ×1

dart ×1

flutter ×1