TL:DR, You can use the prototypeItem or itemExtent properties of the listview.builder; it should solve your issues. The only hiccup is that you need to have all elements be the same layout Check this example: DartPad

Fast scrolling or large scrolls will essentially perform a render for all widgets that are past the scroll extent, since you use a listview.builder, rendered items out of view will be disposed of and handled by the garbage collector; additionally, all the network calls will remain active, essentially queuing hundreds of downloads. This will jank your network and likely your CPU. I’ve written a post on LinkedIn about this.