شرح كيفية التنقل وعمل blur للصور مع Animated في flutter

شرح كيفية التنقل  وعمل blur للصور مع Animated في flutter


 شرح كيفية التنقل  وعمل blur للصور مع Animated في flutter

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


عندما نذكر flutter فإننا نذكر واحد من اقوى ال technology في مجال تطوير mobile application وذلك بسبب كفائتها التي نراها واهمية دعمها لاكثر من platform مختلفه وهذا من اهم اسباب انتشار تقنية flutter وايضا دعمها لتطوير websites و desktop applications والتحديثات المستمره من طرف العملاق google من اجل مساعدة ال developer من انشاء التطبيقات بسهوله وانجاز الاعمال بشكل اسرع وهي لغة widget فإذا فهمت كيف تستخدم ال widget بشكل صحيح والتعرف على كل عنصر منهم فسوف تكون قادر على بناء التطبيقات بسهوله بالنسبة للغة البرمجه الداعمه لفلاتر فهي Dart والتي ظهرت في عام 2011 وانتشرت في نهاية 2017 بسبب Flutter


وضع الصور التي نريد التبديل عليها في list

في البداية سوف نقوم بوضع مصفوفه في class مختلف ونضع بداخلها الصور التي نريد ان نستخدمها يمكنك احضار الصور من الانترنت او من اي مكان الامر راجع لك .


وضع الصور التي نريد التبديل عليها في list

list.dart


List<String> images = [
  "assets/image1.jpg",
  "assets/image2.jpg",
  "assets/image3.jpg",
  "assets/image4.jpg",
  "assets/image5.jpg",
  "assets/image6.jpg"
];


التبديل بين الصور في Flutter مع وجود animation بطريقة مختلفه

نقوم هنا بإستخدام AnimatedSwitcher لكي نستطيع التبديل يمين ويسار مع الانميشن وبعدها استخدمنا BackdropFilter لكي نستطيع وضع blur حول الصور كل هذا لكي نقوم بعمل صورة شفافه خلف الصورة الرئيسيه بالنسبة للصورة الرئيسيه سوف يتم وضعها بداخل الFractionallySizedBox وهنا يتم الحصول على العنصر الخاص بالصورة والصوره نفسها .


التبديل بين الصور في Flutter مع وجود animation بطريقة مختلفه

main_page.dart


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

  @override
  State<GG> createState() => _GGState();
}

int countIndex = 0 ;

class _GGState extends State<GG> {
  @override
  Widget build(BuildContext context) {
    return Stack(
        alignment: Alignment.center,
        children: [
          // Animated Switch position
          AnimatedSwitcher(
            duration: const Duration(microseconds: 600),
            child: Form(
              key: ValueKey<int>(countIndex),
              child: Container(
                decoration: BoxDecoration(
                  image: DecorationImage(image: AssetImage(images[countIndex]) , fit: BoxFit.cover),
                ),
                child: BackdropFilter(
                  filter: ImageFilter.blur(
                    sigmaX: 10,
                    sigmaY: 10,
                  ),
                  child: Container(
                    color: Colors.black45.withOpacity(0.2),
                  ),
                ),
              ),
            ),
          ),
          FractionallySizedBox(
            heightFactor: 0.55,
            child: PageView.builder(
              onPageChanged: (value) {
                setState(() {
                  countIndex = value;
                });
              },
              itemCount: images.length,
              itemBuilder: (context , index) {
                return FractionallySizedBox(
                  widthFactor: 0.8,
                  child: Container(
                    decoration: BoxDecoration(
                      borderRadius: BorderRadius.circular(32),
                        image: DecorationImage(image: AssetImage(images[index]) , fit: BoxFit.cover),
                    ),
                  ),
                );
              },
            ),
          ),
        ],
      );
  }
}

فيديو الشرح



لمزيد من مقالات فلاتر يمكنك متابعة احد المقالات التاليه :

تعليقات