media_cache_manager

helps you to cache media (Audio, Video, Image, etc...) Permanently or for specific time.

With a URL the DownloadMediaBuilder Widget search locally for the file, if file found get it back to snapshot object, if not found then download it then give it to snapshot.

Install

in pubspec.yaml file under dependencies add

media_cache_manager: 

For Android :

Go to android -> app -> build.gradle and add this line inside defaultConfig scope

multiDexEnabled true

and modify minSdkVersion to 20

SetExpireDate ( Optional )

before using the DownloadMediaBuilder Widget you have to call this method for once. ex: I am calling it in main method or at my splash screen. if you didn't call this method it will cache Permanently.

await DownloadCacheManager.setExpireDate(daysToExpire: 10);

General Usage

import 'package:media_cache_manager/media_cache_manager.dart';
DownloadMediaBuilder(
  url: 'https://static.remove.bg/remove-bg-web/5c20d2ecc9ddb1b6c85540a333ec65e2c616dbbd/assets/start-1abfb4fe2980eabfbbaaa4365a0692539f7cd2725f324f904565a9a744f8e214.jpg',
  builder: (context, snapshot) {
    if (snapshot.status == DownloadMediaStatus.success) {
      return Image.file(File(snapshot.filePath!));
    }
    return null;
  },
),

Handle Loading and error states

DownloadMediaBuilder(
  url: 'https://sample-videos.com/video123/mp4/720/big_buck_bunny_720p_30mb.mp4',
  builder: (context, snapshot) {
    if (snapshot.status == DownloadMediaStatus.loading) {
      return LinearProgressIndicator(value: snapshot.progress);
    }
    if (snapshot.status == DownloadMediaStatus.success) {
      return BetterPlayer.file(snapshot.filePath!);
    }
    return const Text('Error!');
  },
),

Explaining of snapshot

DownloadMediaSnapshot has three fields :

  • Status, it has 3 status (Success, Loading, Error).
  • FilePath, it will be available if the file had been downloaded.
  • Progress, it's the process progress if the file is downloading.

Libraries

constants
download_cache_manager
download_media_builder
download_media_snapshot
download_media_status
downloader
media_cache_manager