Network images in Flutter are only cached in memory. Restart the app and every image downloads again.
To cache them on disk, load them with extended_image and pass cache: true.
ExtendedImage.network( url, cache: true,)// or as an ImageProviderExtendedNetworkImageProvider( url, cache: true,)
While it loads, show a subtle box instead of a spinner, fade the image in when it arrives, and show a broken image icon when it fails. All three are covered in Load images smoothly.