Fuera de memoria al mostrar imágenes en ListView

k, quiero obtener elementos de LinearView y obtener su visibilidad, para poder liberar memoria de los elementos ocultos.

¿Es posible hacer eso? ¿Tienes alguna otra idea?

ásicamente, quiero mostrar una secuencia de imágenes que se descargan dinámicamente de las URL, quiero que estén en un ListView, para que la persona pueda desplazarse por ellas, pero si solo cargamos el ListView con un generador normal como este,

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

descargaría todos los elementos a la vez y el dispositivo se quedaría sin memoria. Así que estaba pensando que simplemente liberaría la memoria ocupada por la imagen y luego permitiría al usuario cargar más imágenes sin tener que preocuparse por la memoria.

Además, me gustaría tener solo 5 imágenes cargadas a la vez, por lo que se mostraría 1, 2 arriba y 2 abajo para un desplazamiento más rápido y fluido.

Mis preguntas

¿Hay alguna forma de determinar si el elemento se dibuja (a la vista) o no? ¿Puedo limitar la cantidad de ImageViews que quiero tener en LinearView, pero manteniendo la capacidad de desplazamiento?

EDIT: clase ImageView según lo 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;
  }
}

Tan pronto como ListView comienza a enumerar elementos, comienza a enviar spam "Nueva imagen creada" en la consola.

Respuestas a la pregunta(1)

Su respuesta a la pregunta