imagecachingfluttercache-control

Flutter Image loading and caching


Here is my use case:

  1. I am getting the list of URLs of images.
  2. I want to display and cache them in the database, not only for a particular session so for the next time it should not do a web service call.

Our app is working offline as well. I tried a few libraries like flutter_advanced_networkimage and flutter_cache_manager but I'm getting quite lag and most of the times app crash.


Solution

  • Save it in your app's temp directory using the path_provider package:

    import 'dart:io';
    
    // https://pub.dev/packages/path_provider
    import 'package:path_provider/path_provider.dart';
    
    final Directory temp = await getTemporaryDirectory();
    final File imageFile = File('${temp.path}/images/someImageFile.png');
    
    if (await imageFile.exists()) {
      // Use the cached images if it exists
    } else {
      // Image doesn't exist in cache
      await imageFile.create(recursive: true);
      // Download the image and write to above file
      ...
    }
    

    It will persist through app launches and only gets deleted when the user personally clears the cache or reinstalls the app.