पैकेज, रिपॉज़िटरी और ऐप श्रेणियाँ खोजें

पैकेज विवरणv0.3.1

media_cache_manager

इस पैकेज की मदद से आप मीडिया (ऑडियो, वीडियो, छवि, आदि) को कैश कर सकते हैं।

AndroidiOSmacOSWindowsLinux
30-दिन डाउनलोड
84
लाइक
84
Pub अंक
160

पैकेज इंस्टॉल करें

flutter pub add media_cache_manager

पैकेज अवलोकन

सार्वजनिक जानकारी से बना चयन मार्गदर्शन। केवल संदर्भ हेतु।

media_cache_manager पैकेज छवियों, ध्वनि और वीडियो सहित मीडिया फ़ाइलों को कई प्लेटफ़ॉर्मों पर आसान और कुशल तरीके से कैश करने का एक सरल तरीका प्रदान करता है। यह डाउनलोडिंग, स्टोरिंग और मीडिया को पुनर्प्राप्त करने का निर्देश देता है और समय सीमा पार कर चुके या अप्रयुक्त फ़ाइलों को स्वचालित रूप से साफ करता है। प्रदर्शन और विश्वसनीयता के लिए डिज़ाइन किया गया, यह सिंक्रोनस और एसिंक्रोनस ऑपरेशन दोनों का समर्थन करता है, जिससे यह दूरस्थ स्रोतों से मीडिया सामग्री को बार-बार लोड करने वाले ऐप्स के लिए आदर्श है। इस पैकेज का फ्लटर के संसाधन प्रणाली के साथ निरंतर एकीकरण होता है और उपकरण के भंडारण का उत्तम उपयोग सुनिश्चित करता है।

उपयोग

  • इमेज गैलरी में इमेज कैशिंग
  • स्ट्रीमिंग ऑडियो और वीडियो कंटेंट
  • दोहराए गए मीडिया के लिए नेटवर्क के अनुरोधों को कम करना
  • मोबाइल ऐप्स में ऑफलाइन मीडिया एक्सेस
  • बड़े मीडिया संपत्तियों को प्रभावी ढंग से प्रबंधित करना

मुख्य विशेषताएँ

  • कई मीडिया प्रकारों (चित्र, ऑडियो, वीडियो) का समर्थन करता है
  • कैश किए गए फ़ाइलों का स्वचालित अवधि समाप्ति और साफ़ करना
  • क्रॉस-प्लेटफॉर्म संगतता (Android, iOS, macOS, Windows, Linux)
  • डाउनलोड और प्राप्त करने के लिए सरल API
  • निर्धारित कैश आकार और बनाए रखने क políties

इनके लिए उपयुक्त

  • भारी मीडिया सामग्री वाले ऐप्स
  • ऑफलाइन-प्रथम एप्लिकेशंस
  • मीडिया स्ट्रीमिंग प्लेटफॉर्म
  • चित्र-भारी सोशल मीडिया ऐप्स
  • कुशल संसाधन प्रबंधन की आवश्यकता वाले अनुप्रयोग

विचार योग्य बातें

  • स्टोरेज समस्याओं से बचने के लिए कैश के आकार का सावधानीपूर्वक प्रबंधन करने की आवश्यकता है
  • कुछ प्लेटफॉर्म पर फ़ाइल सिस्टम एक्सेस के लिए अतिरिक्त अनुमतियां की आवश्यकता हो सकती है
  • बहुत बड़े मीडिया फ़ाइल्स के लिए अनअनुकूलित है, कस्टम कॉन्फ़िगरेशन के बिना
  • सीमित आंतरिक विश्लेषण या मॉनिटरिंग उपकरण
  • उन्नत विशेषताओं के लिए बाहरी निर्भरता पर निर्भर करता है

मूल README

संबंधित सोर्स रिपॉज़िटरी के मूल README का स्नैपशॉट। नवीनतम सामग्री के लिए रिपॉज़िटरी देखें।


📦 media_cache_manager

⚡ Helps you to cache and encrypt media (Audio 🎵, Video 🎬, Image 🖼️, etc...) Permanently or for a specific time.

With just a URL, the DownloadMediaBuilder widget will:

  • 🔍 Search locally for the file.
  • 📂 If found → File will be returned in a snapshot.
  • ⬇️ If not found → File will be downloaded and stored locally, then returned in a snapshot.

✨ What’s New?

  • 🗓️ daysToExpire behavior improved.
  • ⚙️ autoDownload option to enable/disable auto download.
  • 📝 Renamed onInit ➝ onInitialize.
  • 🔄 Added initial state to DownloadMediaStatus.
  • 🔐 Encrypt & decrypt files with AES.
  • ⏹️ Cancel downloads anytime.
  • 🔁 Retry failed downloads.
  • 🔄 Added Encrypting / Decrypting states.
  • 🧩 Refactored DownloadMediaBuilder widget.
  • 🚀 Optimized plugin imports.

📥 Install

Add to your pubspec.yaml:

dependencies:
  media_cache_manager: 
⚙️ Android Setup
  1. Open android → app → build.gradle
  2. Add this inside defaultConfig:
multiDexEnabled true
minSdkVersion 20

🚀 Initializing Plugin (Required)

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await MediaCacheManager.instance.init();
  runApp(const MyApp());
}

🔐 Encrypted Files (Optional)

Encrypt media files using AES (OFB mode).

✅ Enable encryption globally
await MediaCacheManager.instance.setEncryptionPassword("I love flutter");

or directly on init:

await MediaCacheManager.instance.init(encryptionPassword: 'I love flutter');

⚠️ Notes:

  • 🐢 Large files may take more time to en/decrypt.
  • 🔒 Files are stored in Temporary Directory, so users & other apps can’t access them.
  • 🔑 Keep passwords safe! The plugin does not cache your file passwords.
🔐 Encrypt single file
DownloadMediaBuilder(
  url: "https://example.com/sample.jpg",
  encryptionPassword: "this is a password",  
  onSuccess: (snapshot) {
    return Image.file(File(snapshot.filePath!));
  }
)

⏳ File Expiration (Optional)

Make cached files expire automatically after specific days.

await MediaCacheManager.instance.setExpireDate(daysToExpire: 10);

or via init:

await MediaCacheManager.instance.init(daysToExpire: 1);

📌 Behavior: If a file is accessed before its expiration → expiration will extend automatically.


⚡ General Usage

DownloadMediaBuilder(
  url: 'https://example.com/sample.jpg',
  onSuccess: (snapshot) {
    return Image.file(File(snapshot.filePath!));
  },
  onLoading: (snapshot) {
    return LinearProgressIndicator(value: snapshot.progress);
  },
),

⏯️ Disable Auto Download

By default, autoDownload = true. You can disable it and control downloads manually:

late DownloadMediaBuilderController controller;

DownloadMediaBuilder(
  url: 'https://example.com/video.mp4',
  autoDownload: false,
  onInitialize: (ctrl) => controller = ctrl,
  onInitial: (_) {
    return ElevatedButton(
      onPressed: controller.getFile,
      child: const Text('Load file'),
    );
  },
  onSuccess: (snapshot) => BetterPlayer.file(snapshot.filePath!),
  onLoading: (snapshot) => LinearProgressIndicator(value: snapshot.progress),
),

⚠️ Handle Loading & Error States

DownloadMediaBuilder(
  url: 'https://example.com/video.mp4',
  onLoading: (snapshot) => LinearProgressIndicator(value: snapshot.progress),
  onSuccess: (snapshot) => BetterPlayer.file(snapshot.filePath!),
  onError: (_) => const Text('❌ Error!'),
),

⏹️ Cancel & 🔄 Retry Downloads

late DownloadMediaBuilderController controller;

DownloadMediaBuilder(
  url: 'https://example.com/video.mp4',
  onInitialize: (ctrl) => controller = ctrl,
  onLoading: (snapshot) {
    return Column(
      children: [
        LinearProgressIndicator(value: snapshot.progress),
        ElevatedButton(
          onPressed: controller.cancel,
          child: const Text('Cancel Download'),
        ),
      ],
    );
  },
  onSuccess: (snapshot) => BetterPlayer.file(snapshot.filePath!),
  onError: (_) => const Text('❌ Error!'),
  onCancel: (_) {
    return ElevatedButton(
      onPressed: controller.retry,
      child: const Text('Retry'),
    );
  },
),

📌 Notes:

  • ❌ You can only call cancel() if status = loading.
  • 🔁 You can only call retry() if status = canceled.

📊 Snapshot Explained

DownloadMediaSnapshot contains 3 fields:

  1. Status → Initial, Success, Loading, Error, Canceled, Encrypting, Decrypting.
  2. FilePath → Available if file is downloaded.
  3. Progress → Download progress (0 → 1).

श्रेणियाँ

निर्भरताएँ

निर्भरता सूची 4 आइटम

सोर्स रिपॉज़िटरी

इस पैकेज का उपयोग करने वाले प्रोजेक्ट

अभी कोई डेटा उपलब्ध नहीं है।