Falta de memória ao exibir imagens no ListView

Ok, então eu quero obter itens do LinearView e obter sua visibilidade, para que eu possa liberar memória nos itens ocultos.

É possível fazer isso? Você tem outras idéias?

Então, basicamente, quero mostrar um fluxo de imagens sendo baixadas dinamicamente de URLs, quero que elas estejam em um ListView, para que a pessoa possa rolar por eles, mas se carregarmos o ListView com um construtor normal como este,

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

faria o download de todos os itens de uma só vez e o dispositivo ficaria sem memória. Então, eu estava pensando em liberar a memória capturada pela imagem e permitir que o usuário carregasse mais imagens sem ter que se preocupar com a memória.

Além disso, eu gostaria de ter apenas 5 imagens carregadas de cada vez, para que 1 seja exibido, 2 acima e 2 abaixo para uma rolagem mais rápida e fluida.

Minhas perguntas:

Existe uma maneira de determinar se o item é desenhado (na vista) ou não?Posso limitar quantas ImageViews eu quero ter no LinearView, mas mantendo a capacidade de rolagem.

EDIT: classe ImageView como prometido

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) {
      Image el = Image.network(
        url,
        scale: 0.1,
      );
      fsb = new FractionallySizedBox(
        widthFactor: 1.0,
        child: el,
      );
    print("New image created");
    return fsb;
  }
}

Assim que o ListView começa a listar itens, ele envia "Nova imagem criada" para o console.