شارك المقالة

شرح Flutter Blurred ListView لإضافة تأثير Blur ديناميكي أثناء التمرير


إذا كنت ترغب في تحسين تجربة المستخدم داخل تطبيق Flutter الخاص بك، فإن استخدام Flutter Blurred ListView يعد من أفضل الطرق لإضافة لمسة احترافية أثناء التمرير داخل القوائم. فبدلاً من عرض قائمة تقليدية، يمكنك إنشاء تأثير تمويه (Blur) ديناميكي يتغير حسب سرعة التمرير، مما يجعل الواجهة أكثر تفاعلية وجاذبية.

في التطبيقات الحديثة، أصبحت التفاصيل الصغيرة مثل تأثيرات التمرير تلعب دورًا كبيرًا في تحسين الانطباع العام للمستخدم. وهنا يأتي دور تقنيات مثل BackdropFilter و AnimationController التي تساعدك على بناء تجربة استخدام سلسة ومتقدمة.

في هذا المقال سنتعرف على كيفية تنفيذ Flutter Blurred ListView، وفهم طريقة عمله، والأدوات المستخدمة لبنائه، بالإضافة إلى أفضل الممارسات لتحسين الأداء.

ما هو Flutter Blurred ListView؟

يشير Flutter Blurred ListView إلى قائمة تمرير (ListView) تحتوي على تأثير تمويه يظهر ويتغير أثناء التمرير، خاصة عند التمرير السريع. هذا التأثير يعطي إحساسًا بالحركة والعمق، ويجعل تجربة التصفح أكثر احترافية.

في هذا النوع من القوائم، يتم عرض نسختين:

– قائمة عادية بدون تأثير – قائمة أخرى تحتوي على Blur

ويتم التحكم في ظهور تأثير التمويه بناءً على سرعة التمرير.

كيف يعمل تأثير التمويه أثناء التمرير؟

يعتمد Flutter Blurred ListView على فكرة بسيطة لكنها فعالة:

– عند التمرير ببطء → لا يوجد Blur – عند التمرير بسرعة → يظهر تأثير التمويه

يتم حساب سرعة التمرير باستخدام الفرق بين موضع التمرير الحالي والسابق، مقسومًا على الزمن. وكلما زادت السرعة، زادت قيمة التمويه.

هذا الأسلوب يعطي إحساسًا طبيعيًا بالحركة، مشابه لما نراه في بعض التطبيقات الاحترافية.

الأدوات المستخدمة في تنفيذ Flutter Blurred ListView

AnimationController
يستخدم للتحكم في شدة التمويه بمرور الوقت، حيث يتم تشغيل الأنيميشن عند التمرير وإيقافه عند التوقف.

Tween
يستخدم لتحديد نطاق التمويه (من 0 إلى قيمة معينة).

BackdropFilter
الأداة الأساسية لتطبيق تأثير التمويه على العناصر الخلفية.

LinkedScrollControllerGroup
يستخدم لمزامنة التمرير بين قائمتين، واحدة عادية وأخرى تحتوي على Blur.

Timer
يستخدم لإعادة التمويه إلى الصفر بعد توقف التمرير.

مثال على استخدام BackdropFilter لتطبيق Blur


BackdropFilter(
  filter: ImageFilter.blur(sigmaX: blurValue, sigmaY: blurValue),
  child: Container(
    color: Colors.transparent,
  ),
)

في هذا المثال، يتم تطبيق التمويه على العناصر الموجودة خلف الـ Widget، ويتم التحكم في شدة التمويه من خلال قيمة blurValue.

ما هو دور LinkedScrollControllerGroup؟

يعد LinkedScrollControllerGroup من الأدوات المهمة في هذا المثال، حيث يسمح بربط أكثر من ListView معًا بحيث تتحرك بنفس السرعة.

في Flutter Blurred ListView يتم استخدام قائمتين:

– القائمة الأساسية – قائمة أخرى فوقها تحتوي على تأثير Blur

وبفضل هذا الربط، تتحرك القائمتان بشكل متزامن، مما يجعل التأثير يبدو طبيعيًا جدًا.

كيف يتم حساب سرعة التمرير؟

يتم حساب سرعة التمرير باستخدام المعادلة التالية:

– الفرق بين الموضع الحالي والسابق – تقسيمه على الزمن بين التحديثين

ثم يتم استخدام هذه القيمة لتحديد مقدار التمويه:

– سرعة منخفضة → Blur قليل – سرعة عالية → Blur قوي

وهذا ما يجعل Flutter Blurred ListView أكثر واقعية وتفاعلية.

دور AnimationController وTween في التحكم بالتمويه

يتم استخدام AnimationController لإدارة توقيت التغير في التمويه، بينما يستخدم Tween لتحديد القيم بين البداية والنهاية.

مثال:

AnimationController controller;
Animation blurAnimation;

blurAnimation = Tween(begin: 0, end: 10).animate(controller);

بهذا الشكل يتم التحكم في زيادة أو تقليل التمويه تدريجيًا أثناء التمرير.

لماذا نستخدم Timer في هذا النوع من التأثيرات؟

يتم استخدام Timer للكشف عن توقف التمرير. فعندما يتوقف المستخدم عن التمرير لفترة قصيرة (مثلاً 200ms)، يتم تشغيل Animation تقلل التمويه تدريجيًا حتى يعود إلى الصفر.

هذا يمنع بقاء التمويه بعد توقف التمرير، ويجعل التجربة أكثر طبيعية.

ما هي ميزة Fast Scroll Simulation؟

تستخدم هذه الميزة لمحاكاة تمرير سريع داخل القائمة بهدف عرض تأثير التمويه بشكل واضح. وهي مفيدة أثناء الاختبار أو العروض التوضيحية.

يمكن استخدامها لتوضيح كيف يتغير Blur حسب سرعة الحركة.

كيفية تنفيذ Flutter Blurred ListView في مشروعك

لتطبيق هذا الأسلوب داخل مشروعك:

– إنشاء ListView أساسي – إنشاء ListView آخر بنفس البيانات – ربطهما باستخدام LinkedScrollControllerGroup – استخدام BackdropFilter لتطبيق التمويه – حساب سرعة التمرير – استخدام AnimationController للتحكم في Blur

بهذه الخطوات يمكنك بناء تأثير احترافي بسهولة.

تحسين الأداء عند استخدام Blur

رغم أن Flutter Blurred ListView يعطي تأثيرًا رائعًا، إلا أنه يحتاج إلى تحسين الأداء:

تقليل استخدام Blur
لأن التمويه يستهلك موارد GPU.

استخدام CachedNetworkImage
لتقليل تحميل الصور.

تحديد عناصر محدودة للتأثير
بدلاً من تطبيقه على القائمة بالكامل.

اختبار الأداء على أجهزة مختلفة
للتأكد من السلاسة.

أفضل استخدامات Flutter Blurred ListView

يمكن استخدام هذا التأثير في:

– تطبيقات الأخبار – تطبيقات الصور والمعارض – تطبيقات الفيديو – تطبيقات التواصل الاجتماعي – واجهات Dashboard

أي تطبيق يحتوي على تمرير يمكنه الاستفادة من هذا التأثير.

رابط الكود


https://github.com/Rahiche/a_closer_look_at_the_blur_effect/blob/main/lib/slides/slide_14_motion.dart

رابط المقال


https://github.com/Rahiche/a_closer_look_at_the_blur_effect/blob/main/lib/slides/slide_14_motion.dart

الخلاصة

يعد Flutter Blurred ListView من التقنيات الحديثة التي تضيف لمسة احترافية إلى تطبيقات Flutter، خاصة عند التعامل مع القوائم والتمرير.

من خلال الجمع بين AnimationController و BackdropFilter و LinkedScrollControllerGroup، يمكنك إنشاء تجربة مستخدم سلسة وديناميكية تشبه التطبيقات العالمية.

إذا كنت ترغب في تطوير تطبيق أكثر جاذبية وتفاعلية، فإن هذا التأثير يعد خيارًا ممتازًا يستحق التجربة داخل مشاريعك القادمة.

مزيد من المقالات : كيف تجعل تطبيقك أسرع وأخف باستخدام Flutter DevTools؟
شاهد أيضًا
مقالات ذات صلة

🚫 مانع الإعلانات مفعل

يجب إيقاف مانع الإعلانات لاستكمال تصفح الموقع