شرح تخزين اي نوع بيانات من الانترنت في cache داخل تطبيقك في Flutter

شرح تخزين اي نوع بيانات من الانترنت في cache داخل تطبيقك في Flutter

شرح تخزين اي نوع بيانات من الانترنت في cache داخل تطبيقك في Flutter

في هذه المقالة سوف نشارك معكم طريقة لتخزين البيانات التي يتم الحصول عليها من الانترنت سواء كنت تستخدم firebase او api فيمكنك من خلال هذه المكتبة تخزين البيانات التي ترغب بها بمختلفف الاشكال في الذاكرة المؤقته في جهازك حتى تتمكن من فتحها في حالة عدم وجود الانترنت بسهوله , يوجد اكثر من طريقة تستطيع من خلالها تنفيذ هذه العملية ولكن هذه الطريقة تعد الابسط حيث انها عباره عن مكتبة كل ما تحتاجه فقط هو الرابط وبعدها سوف يتم التعامل معه وايضا يمكنك وضع مده معينه للتحميل وبعدها يتم حذف الملف من الذاكرة المؤقته من جهاز المستخدم .


Native ARM هي إحدى ميزات Flutter المفيدة للشركات الناشئة والشركات التقنية. يمكّنك من تنفيذ فكرتك وجني ثمارها الكاملة لمشاريعك اللاحقة. سيجد المستخدمون أنه من الأسهل قراءة مواد الويب في تطبيقات الهاتف بفضل هذه الخصائص. يسهل Flutter أيضًا تثبيت التطبيق والتنقل. ثم تبين أن أحدث ترقية لـ Dart.2.2 قد غيرت قواعد اللعبة. تحسين أداء التعليمات البرمجية المترجمة AOT. يتوفر أيضًا عدد من فئات المجموعات في مكتبة dart لنمذجة الخرائط والقوائم ومجموعات الكائنات. تتيح الميزة إمكانية متابعة المعاملة في تطبيقك عندما يبدأ المستخدم واحدة في متجر التطبيقات.


add package :


media_cache_manager: ^0.0.2+1

better_player: ^0.0.83



How to cache any medi in Flutter

يمكنك استخدام الاكواد التاليه حتى تستطيع استخدام المكتبة بسهوله وهذه الاكواد توضح العملية التي تتم خلال تحميل الملفات وتثبيتها في الذاكرة المؤقته في جهاز المستخدم حتى يتمكن للوصول اليها في اي وقت , في الجزء الاول قمنا بتحميل فيديو ولهذا يمكنك اعطاء رابط الفيديو للمكتبة وفي حالة التحميل سوف يظهر ايقونه للانتظار وعند الانتهاء سوف يكون جاهز لكي تشغله من خلال مكتبة اخرى تحصل على البيانات من الجهاز الخاص بك وتقوم بعرضها بدون مشاكل وفي الكود الاخر نفس الطريقة ولكن كانت على صورة وللحصول على صورة من داخل الجهاز يمكنك استخدام file حتى تتمكن من الوصول الى المسار وعرض ما بداخله بدون مشاكل .


How to cache any medi in Flutter

code.dart


void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await DownloadCacheManager.setExpireDate(daysToExpire: 5);
  runApp(const MyApp());
}

// ------------ code

class CacheUrls extends StatefulWidget {
  const CacheUrls({Key? key}) : super(key: key);

  @override
  State<CacheUrls> createState() => _CacheUrlsState();
}

class _CacheUrlsState extends State<CacheUrls> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            DownloadMediaBuilder(
              url: '###VIDEO',
              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!');
              },
            ),
            SizedBox(height: 20),
            DownloadMediaBuilder(
              url: '##IMG',
              builder: (context, snapshot) {
                if (snapshot.status == DownloadMediaStatus.success) {
                  return Image.file(File(snapshot.filePath!),height: 200,width: 200,fit: BoxFit.cover,);
                }
                return null;
              },
            )
          ],
        ),
      ),
    );
  }
}

تعليقات