شارك المقالة

شرح كيفية تحريك و اسقاط العناصر في فلاتر | drag and drop widget in Flutter


شرح كيفية تحريك و اسقاط العناصر في فلاتر | drag and drop widget in Flutter

في هذا المقال سوف نشرح معكم كيف تقوم بعمل تحريك واسقاط للعناصر drag and drop باستخدام تقنية flutter والغنيه عن التعريف , سوف نشارك معكم موضوع مهم في تحريك العناصر وهو drag and drop وكيف تستطيع القيام به في تطبيقك وهل تعلم ان هنالك تطبيقات قائمه بشكل كامل على فكرة التحريك والاسقاط وغالبا تطبيقات الاطفال والمميز في فلاتر انها تقدم لنا widgets عديده جدا تساعدنا في انجاز المهام بشكل اسرع مثل ال widget الذي سوف نشاركه معكم اليوم .


android sdk manager تحميل flutter developers applications create app android android studio mac


drag and drop widget in Flutter

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


drag and drop widget in Flutter

main1.dart


class _GeeCodersState extends State<GeeCoders> {
  Offset _offset = const Offset(200,250);

  @override
  Widget build(BuildContext context) {

    return Scaffold(
      appBar: AppBar(),
      body: Center(
        child: LayoutBuilder(
          builder: (context, constraints) {
            return Stack(
              children: [
                Positioned(
                  left: _offset.dx,
                  top: _offset.dy,
                  child: LongPressDraggable(
                    feedback: Image.network("https://images.unsplash.com/photo-1669490893279-4589b3b1cf4e?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=687&q=80",height: 200,color: Colors.cyan,),
                    child: Image.network("https://images.unsplash.com/photo-1669490893279-4589b3b1cf4e?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=687&q=80",height: 200,),
                    onDragEnd: (details) {
                      setState(() {
                        final adjustment = MediaQuery.of(context).size.height -
                            constraints.maxHeight;
                        _offset = Offset(
                            details.offset.dx, details.offset.dy - adjustment);

                        print(_offset.dx);
                        print(_offset.dy);
                      });
                    },
                  ),
                ),
              ],
            );
          },
        ),
      ),
    );
  }
}


How to Dropping an item Flutter

في هذا الكود يمكنك من خلاله تنفيذ لعبه بسيطة للتحريك والاسقاط فهذا الكود يوضح مكان للعنصر وعندما تضع العنصر في المكان المناسب يظهر رساله انها صحيحه ويمكنك من خلال هذا الكود تنفيذ لعبه كامله مثل العاب التركيب حتى تتمكن من تنفيذ تطبيق كامل قائم عليها بشكل اساسي .


How to Dropping an item Flutter

main2.dart


class _GeeCodersState extends State<GeeCoders> {
  String img = 'https://images.unsplash.com/photo-1669490893279-4589b3b1cf4e?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=687&q=80';
  final String _color = 'red';
  bool _isDropped = false;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(),
      body: Center(
        child: Column(
          children: [
            Draggable(
              // Data is the value this Draggable stores.
              data: _color,
              // after long click
              childWhenDragging: SizedBox(
                height: 220.0,
                width: 220.0,
                child: Center(
                  child: Container(
                    color: Colors.grey,
                    // height: 200,
                  ),
                ),
              ),
              // after drag
              feedback: SizedBox(
                height: 220.0,
                width: 220.0,
                child: Center(
                  child: Image.network(
                    img,
                    fit: BoxFit.cover,
                    width: 220.0,
                    height: 200,
                  ),
                ),
              ),
              // child
              child: SizedBox(
                height: 220.0,
                width: 220.0,
                child: Center(
                  child: _isDropped ? const SizedBox.shrink() : Image.network(img,fit: BoxFit.cover,height: 220,width: 220,),
                ),
              ),
            ),
            SizedBox(height: 100,),
            DragTarget(
              builder: (
                  BuildContext context,
                  List<dynamic> accepted,
                  List<dynamic> rejected,
                  ) {
                return Container(
                  height: 220,
                  width: 220,
                  child: Center(
                    child: _isDropped ? Image.network(img,fit: BoxFit.cover,height: 220,width: 220,) : Container(height: 220,width: 220,color: Colors.grey,),
                  ),
                );
              },
              onWillAccept: (data) {
                return data == 'red';
              },
              onAccept: (data) {
                setState(() {

                  showTopSnackBar(
                    Overlay.of(context),
                    CustomSnackBar.success(
                      message:
                      "Good job",
                    ),
                  );

                  _isDropped = true;
                });
              },
            ),
          ],
        ),
      ),
    );
  }
}


شاهد أيضًا
مقالات ذات صلة
شرح كيفية نقل ArrayList من activity الى Activity اخرى بواسطة Parcelable

 شرح كيفية نقل ArrayList من activity الى Activity اخرى بواسطة Parcelableتعد الParcelable واحده من اشهر…

تطبيق الvalidation في Flutter والتاكد من صحة البيانات

  تطبيق الvalidation في Flutter والتاكد من صحة البيانات خاصية الvalidation من الخصائص التي لا غنى…

كود برنامج بلغة البايثون يقوم بالتحقق من رقم ارموسينغ – Armstrong Numbe python code

كود برنامج بلغة البايثون يقوم بالتحقق من رقم ارموسينغ متابعي موقع ومدونة جي كودرس –…

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

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