كيفية تخزين الفيديوهات في الكاش والعوده اليها في حاله عدم الاتصال بالانترنت Flutter
في تطوير تطبيقات Flutter الحديثة، تمثل إدارة الملفات المؤقتة وتخزين الفيديو تحديات كبيرة، خاصة مع الحاجة إلى تحسين تجربة المستخدم وتقليل استهلاك البيانات. تعد مكتبات Flutter_cache_manager وvideo_player من الأدوات القوية التي تساعد المطورين على إدارة هذه العمليات بسهولة وكفاءة. في هذه المقالة،
سنوضح لك كيفية استخدام هذه المكتبات للتخزين المؤقت للفيديو والملفات الأخرى في التطبيقات، مع تفصيل الخطوات والأمثلة وأفضل الممارسات.
ما هي مكتبة Flutter_cache_manager؟
Flutter_cache_manager هي مكتبة ذاكرة تخزين مؤقت قوية للملفات. يتيح لك ذلك تنزيل الملفات وحفظها، مما يسمح للتطبيق باستردادها لاحقًا دون الحاجة إلى الرجوع إليها. وهذا يساعد على حفظ البيانات وتحسين
أداء التطبيق. أهم مميزات مكتبة Flutter_cache_manager:
إدارة الملفات تلقائيًا: تقوم المكتبة بإدارة الملفات وتنظيف الملفات القديمة تلقائيًا.
يدعم التنزيل التلقائي: يمكنه تنزيل الملفات تلقائيًا عند الحاجة.
تحسين الأداء: تقليل ضغط الموارد عن طريق تنزيل الملفات من ذاكرة التخزين المؤقت بدلاً من الإنترنت.
كيفية تثبيت واستخدام Flutter_cache_manager
لتثبيت المكتبة، أضف السطر التالي إلى ملف pubspec.:
flutter_cache_manager: ^3.4.1
للاستخدام، قم بكتابة الكود التالي لتحميل ملف وتخزينه مؤقتًا:
import 'package:flutter_cache_manager/flutter_cache_manager.dart';
Future<void> cacheFile(String url) async {
final file = await DefaultCacheManager().getSingleFile(url);
// يمكنك الآن استخدام الملف المخزن مؤقتًا
}
ما هي مكتبة video_player؟
تُستخدم مكتبة video_player لتشغيل مقاطع الفيديو في تطبيقات Flutter. تدعم هذه المكتبة تشغيل الفيديو من مصادر متعددة، بما في ذلك الملفات المخزنة مؤقتًا باستخدام Flutter_cache_manager.
أهم مميزات مكتبة video_player
تشغيل الفيديو من الشبكة أو وحدة التخزين المحلية: دعم تشغيل الفيديو عبر الإنترنت أو فلاش.
توفير عناصر تحكم كاملة في التشغيل: السماح بالتحكم في تشغيل الفيديو والإيقاف المؤقت والتنقل.
دعم التشغيل دون الاتصال بالإنترنت: باستخدام Flutter_cache_manager، يمكن تشغيل مقاطع الفيديو دون الاتصال بالإنترنت.
كيفية تثبيت واستخدام video_player
video_player: ^2.9.2
كيفيه استخدام flutter_cache_manager مع video_player
import 'package:video_player/video_player.dart';
import 'package:flutter_cache_manager/flutter_cache_manager.dart';
class VideoCachePlayer extends StatefulWidget {
final String url;
VideoCachePlayer({required this.url});
@override
_VideoCachePlayerState createState() => _VideoCachePlayerState();
}
class _VideoCachePlayerState extends State<VideoCachePlayer> {
late VideoPlayerController _controller;
@override
void initState() {
super.initState();
_initializePlayer();
}
Future<void> _initializePlayer() async {
final file = await DefaultCacheManager().getSingleFile(widget.url);
_controller = VideoPlayerController.file(file)
..initialize().then((_) {
setState(() {});
_controller.play();
});
}
@override
void dispose() {
_controller.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return _controller.value.isInitialized
? AspectRatio(
aspectRatio: _controller.value.aspectRatio,
child: VideoPlayer(_controller),
)
: CircularProgressIndicator();
}
}
