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

كيف نتحكم في function من صفحة مختلفة في flutter

Flutter Dev

السؤال

تحيه طيبه للجميع

قمت بعمل تطبيق يحتوي على صفحتين وكل صفحة لديها function  بإضافة بيانات في قاعدة البيانات 

الان مشكلتي انني ارغب بتحكم ب function  في الصفحة الثانية من الصفحة الأولى بحيث أقوم بالاتصال بها وجعلها تعمل 

كيف يمكن فعل ذلك ؟

كود مثال على ذلك: هذا الصفحة الاولى والتي ارغب ممن خلالها ان اتصل مع function  في الصفحة الثانية

void main() {
  runApp(MainPage());
}
class MainPage extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MainPage> {
  TextEditingController NameController = TextEditingController();
  Future AddNewData() async {
    final response = await http.post(Uri.parse("**********", ),
        body: {
          "Name": NameController.text,
        }
    );
    if (response.statusCode == 200) {
    } else {
      throw Exception('Send Failed');
    }
  }


  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
          body: Column(children: [
            TextFormField(
              controller: NameController,
              decoration: InputDecoration(
                  border: OutlineInputBorder(),
        
                 ),

            ),

            ElevatedButton(
              child: Text('add new data'),
              onPressed: () {
                AddNewData();
              },
            ),
          ],)
      ),
    );
  }
}

 

 

الصفحة الثانية الصفحة المستهدفة:

class secondpage extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<secondpage> {

  TextEditingController ColorController = TextEditingController();
  Future AddNewColor() async {
    final response = await http.post(Uri.parse("**********", ),
        body: {
          "Color": ColorController.text,
        }
    );
    if (response.statusCode == 200) {
    } else {
      throw Exception('Send Failed');
    }
  }


  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: Column(children: [
          TextFormField(
            controller: ColorController,
            decoration: InputDecoration(
                border: OutlineInputBorder(),
             ),

          ),

          ElevatedButton(
            child: Text('add new color'),
            onPressed: () {
              AddNewColor();
            },
          ),
        ],)
      ),
    );
  }
}

 

 

الان لتوضيح الفكرة اكثر احتاج ان اتصل ب AddNewColor في الزر الموجود في صفحة main page  او الصفحة الأولى مثل التالي:

 ElevatedButton(
              child: Text('add new data'),
              onPressed: () {
                AddNewData();
      AddNewColor();

              },
            ),

كيف يمكن فعل ذلك؟ احد عنده فكره؟

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

Recommended Posts

  • 1

هذا هو جوهر استعمال state management وأنصحك باستعمال getX تمكنك من :

  • > إدارة المسار: لإنشاء أدوات مثل Snackbar و Bottomsheets ومربعات الحوار وما إلى ذلك. بعد ذلك ، في هذه المرحلة ، يمكننا إشراك GetX فيه لأن GetX يمكنه تجميع هذه الأدوات دون استخدام السياق.
  • > أداء عالٍ: تستخدم GetX أصولًا أقل كما هو متوقع. لا تعتمد على Streams أو ChangeNotifier. عند تساوي كل الأشياء ، فإنه يستخدم GetValue و GetStream المنخفضان للخمول لزيادة تطوير التنفيذ.
  • > كود أقل: قد تكون سئمت من تنفيذ نموذج الكتلة في نمط الكتلة وإهدار طاقة التطوير على أكواد غير ضرورية. الوقت هو المال ، أليس كذلك؟ في GetX ، لن تؤلف أي نموذج معياري. يمكنك إنجاز نفس الشيء بشكل أسرع بكثير ، باستخدام كود أقل في GetX. لا تكلف نفسك عناء إنشاء فصول للولاية والحدث ، لأن هذه النماذج المعيارية غير موجودة في GetX.
  • > لا يوجد توليد للكود: هناك سبب مقنع للحاجة إلى استخدام مولدات الكود بأي وسيلة. لذلك لن يضيع وقتك المهم في التطوير أكثر على تشغيل مولدات الأكواد (build_runner) كلما قمت بتغيير شفرتك.
  • > لا توجد عمليات إعادة بناء غير ضرورية: التعديلات غير المرغوب فيها هي مشكلة تخص مديري الدولة استنادًا إلى ChangeNotifier. عندما تقوم بإدخال تحسين في فئة ChangeNotifier الخاصة بك ، يتم إعادة بناء جميع عناصر واجهة المستخدم التي تعتمد على فئة ChangeNotifier هذه. قد تكون بعض عمليات إعادة البناء غير ضرورية ومكلفة. قد يقلل من أداء التطبيق أيضًا. لا تحتاج إلى التأكيد على هذا في GetX لأنه لا يستخدم ChangeNotifier بأي وسيلة.

للمزيد تفحص هذا الرابط الرسمي https://pub.dev/packages/get

 

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

  • 1
بتاريخ الآن قال مروان مروان3:

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

الا توجد طريقة مختلفة بدون استعمل هذا المكتبة اخي؟

لا أخي ، state management تستلزم التعامل مع احد الحزم مثل provider أو getX ....المعتمدة من قبل كبرى الشركات ، ومستحيل أن تجد مطور لايتعامل معها 

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

  • 1
بتاريخ الآن قال مروان مروان3:

اخي @Ahmed Sadek

كيف ممكن أوصل للفكش في الصفحة الثانية من خلال getX  ؟ ممكن شرح مختصر لو عندك فكره

هذا موضوع طويل أخي . من غير الممكن شرحه هنا 

حاول ان تبحث عن طريقة عملها وإن شاء الله رح تطور كثير ، لأنها أساس العمل في أي تطبيق

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

  • 0
بتاريخ 2 دقائق مضت قال Ahmed Sadek:

هذا هو جوهر استعمال state management وأنصحك باستعمال getX تمكنك من :

  • > إدارة المسار: لإنشاء أدوات مثل Snackbar و Bottomsheets ومربعات الحوار وما إلى ذلك. بعد ذلك ، في هذه المرحلة ، يمكننا إشراك GetX فيه لأن GetX يمكنه تجميع هذه الأدوات دون استخدام السياق.
  • > أداء عالٍ: تستخدم GetX أصولًا أقل كما هو متوقع. لا تعتمد على Streams أو ChangeNotifier. عند تساوي كل الأشياء ، فإنه يستخدم GetValue و GetStream المنخفضان للخمول لزيادة تطوير التنفيذ.
  • > كود أقل: قد تكون سئمت من تنفيذ نموذج الكتلة في نمط الكتلة وإهدار طاقة التطوير على أكواد غير ضرورية. الوقت هو المال ، أليس كذلك؟ في GetX ، لن تؤلف أي نموذج معياري. يمكنك إنجاز نفس الشيء بشكل أسرع بكثير ، باستخدام كود أقل في GetX. لا تكلف نفسك عناء إنشاء فصول للولاية والحدث ، لأن هذه النماذج المعيارية غير موجودة في GetX.
  • > لا يوجد توليد للكود: هناك سبب مقنع للحاجة إلى استخدام مولدات الكود بأي وسيلة. لذلك لن يضيع وقتك المهم في التطوير أكثر على تشغيل مولدات الأكواد (build_runner) كلما قمت بتغيير شفرتك.
  • > لا توجد عمليات إعادة بناء غير ضرورية: التعديلات غير المرغوب فيها هي مشكلة تخص مديري الدولة استنادًا إلى ChangeNotifier. عندما تقوم بإدخال تحسين في فئة ChangeNotifier الخاصة بك ، يتم إعادة بناء جميع عناصر واجهة المستخدم التي تعتمد على فئة ChangeNotifier هذه. قد تكون بعض عمليات إعادة البناء غير ضرورية ومكلفة. قد يقلل من أداء التطبيق أيضًا. لا تحتاج إلى التأكيد على هذا في GetX لأنه لا يستخدم ChangeNotifier بأي وسيلة.

للمزيد تفحص هذا الرابط الرسمي https://pub.dev/packages/get

 

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

الا توجد طريقة مختلفة بدون استعمل هذا المكتبة اخي؟

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

  • 0
بتاريخ الآن قال Ahmed Sadek:

لا أخي ، state management تستلزم التعامل مع احد الحزم مثل provider أو getX ....المعتمدة من قبل كبرى الشركات ، ومستحيل أن تجد مطور لايتعامل معها 

تشكر كثير

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

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...