اذهب إلى المحتوى
  • 0

كيفية نقل البيانات بين الحاويات في pageview في flutter

Flutter Dev

السؤال

استعمل pageview  لعرض مجموعة من الحاويات وكل حاوية تملك بيانات مختلفة عن الأخرى سوف اضع في كل حاوية Listview.builder سوف تعرض بيانات من خلال قاعدة البيانات وسوف اعمل GestureDetector في هذا القائمة بحيث ان المستخدم لو قام بالاختيار سوف ينتقل الى الخيار الذي ضغط عليه ولكن مشكلتي هيا كيف استطيع نقل بيانات بين هذا الحاوية بحيث اخبر التطبيق اذا كان المستخدم في الحاوية رقم 1 وقام بعملية اختيار بيانات انقل لي هذا البيانات الى الحاوية رقم 2 او الحاوية الثانية وهكذا.

الكود التالي هو ما اعمل عليه :وهو يحتوي على عدد 3 حاويات او Container 

في الوضع العادي أقوم بنقل البيانات بشكل التالي بين الصفحات :

Navigator.push(
      context,
      MaterialPageRoute(
          builder: (context) => Pagetwo(item: item,)));

ولكن هنا الامر اختلف أحاول القيام بذلك ولكن نقل البيانات بين الحاويات 

import 'package:flutter/material.dart';

void main() => runApp(SwapPV());

class SwapPV extends StatefulWidget {


  @override
  _SwapPVState createState() => _SwapPVState();
}

class _SwapPVState extends State<SwapPV> {
  PageController controller = PageController();

  @override
  Widget build(BuildContext context) {
    return MaterialApp(home: Scaffold(
        body: Stack(
          alignment: Alignment.center,
          children: [
            PageView(
              physics: NeverScrollableScrollPhysics(),
              controller: controller,
              children: [
                Column(
                  children: [
                    Container(
                      color: Colors.red,
                    ),
                  ],
                ),
                Container(
                  color: Colors.amber,
                ),
                Container(
                  color: Colors.green,
                ),
              ],
            ),
            Container(
              color: Colors.pink.withOpacity(.2),
              child: Text("OverLap Container"),
            ),
            Align(alignment: Alignment(0, .1), child: Text("Another OverLapText")),

            ///THis will controll the PageView



          ],
        )
        ));
  }
}

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1
بتاريخ 4 ساعات قال مروان مروان3:

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

 

انا عامل pageview عشان اقلل عدد الصفحات وطول الكود الامر ناجح ولكن مشكلتي فقط في نقل البيانات بين هذا Container 

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

لامشكلة من وجود عدد ملفات كبير، لأن التعقيد في ملف واحد هو ما نتجنبه.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 1

لاحظت أنك تمرر العناصر item للصفحة الثانية، 

ضمن الصنف الخاص بالصفحة تقوم باستقبال القيمة الممررة من خلال الدالة البانية، التي يمكنك إنشائها بالطريقة التالية:

class SwapPV extends StatefulWidget {
	
  final dynamic item; // تعريف العنصر
  
  // إسناد قيمة الخاصية في الدالة البانية
  SwapPV(this.item);

  @override
  _SwapPVState createState() => _SwapPVState();
}

وحتى تستطيع الوصول للعنصر ضمن صنف الحالة state، نقوم في دالة التهيئة بذكر العنصر المطلوب

class _SwapPVState extends State<SwapPV> {

  dynamic stateItem; // تعريف متغير ضمن الحالة
  
@override
initState() {
  super.initState();

	stateItem = widget.item;    // هذه تجلب القيمة من الصنف الخاص بالصفحة لصنف الحالة
 
}

ثم يمكنك تعديله ل stateItem و استخدامه في الدالة Build وغيرها

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 1
بتاريخ 48 دقائق مضت قال مروان مروان3:

اهلا بك اخي الكريم

كل الشكر لك على جوابك عزيزي ولكن سوالي قليلا مختلف اعتذر على ما يبدو لم اشرح المشكلة بشكل صحيح انا ارغب بنقل البيانات من ()Container الى ()Container أخرى في نفس الصفحة في أداة Pageview 

حاولت تعريف قائمتين من نمط متغيرات كل منهم تمثل قائمة (مصفوفة)، ثم عمل معالجة نقل العناصر بينهم، و من ثم تعديل حالة التطبيق ليتم إعادة عرض الصفحة وبالتالي عرض كل مصفوفة من جديد في الحاوية الخاصة بها

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 13 ساعات قال Wael Aljamal:

لاحظت أنك تمرر العناصر item للصفحة الثانية، 

ضمن الصنف الخاص بالصفحة تقوم باستقبال القيمة الممررة من خلال الدالة البانية، التي يمكنك إنشائها بالطريقة التالية:


class SwapPV extends StatefulWidget {
	
  final dynamic item; // تعريف العنصر
  
  // إسناد قيمة الخاصية في الدالة البانية
  SwapPV(this.item);

  @override
  _SwapPVState createState() => _SwapPVState();
}

وحتى تستطيع الوصول للعنصر ضمن صنف الحالة state، نقوم في دالة التهيئة بذكر العنصر المطلوب


class _SwapPVState extends State<SwapPV> {

  dynamic stateItem; // تعريف متغير ضمن الحالة
  
@override
initState() {
  super.initState();

	stateItem = widget.item;    // هذه تجلب القيمة من الصنف الخاص بالصفحة لصنف الحالة
 
}

ثم يمكنك تعديله ل stateItem و استخدامه في الدالة Build وغيرها

اهلا بك اخي الكريم

كل الشكر لك على جوابك عزيزي ولكن سوالي قليلا مختلف اعتذر على ما يبدو لم اشرح المشكلة بشكل صحيح انا ارغب بنقل البيانات من ()Container الى ()Container أخرى في نفس الصفحة في أداة Pageview 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 6 دقائق مضت قال Wael Aljamal:

حاولت تعريف قائمتين من نمط متغيرات كل منهم تمثل قائمة (مصفوفة)، ثم عمل معالجة نقل العناصر بينهم، و من ثم تعديل حالة التطبيق ليتم إعادة عرض الصفحة وبالتالي عرض كل مصفوفة من جديد في الحاوية الخاصة بها

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

 

انا عامل pageview عشان اقلل عدد الصفحات وطول الكود الامر ناجح ولكن مشكلتي فقط في نقل البيانات بين هذا Container 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ On 6/10/2022 at 15:41 قال Wael Aljamal:

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

لامشكلة من وجود عدد ملفات كبير، لأن التعقيد في ملف واحد هو ما نتجنبه.

مرحبا اخي الكريم

شاكر لك مساعدتك عزيزي 

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

شكرا لك اخي الكريم

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...