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

استفسار عن مشكلة في flutter

Flutter Dev

السؤال

السلام عليكم ورحمة الله وبركاته

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

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

[ERROR:flutter/lib/ui/ui_dart_state.cc(186)] Unhandled Exception: setState() called after dispose(): _HomePageState#a94fc(lifecycle state: defunct, not mounted)
E/flutter (19298): This error happens if you call setState() on a State object for a widget that no longer appears in the widget tree (e.g., whose parent widget no longer includes the widget in its build). This error can occur when code calls setState() from a timer or an animation callback.
E/flutter (19298): The preferred solution is to cancel the timer or stop listening to the animation in the dispose() callback. Another solution is to check the "mounted" property of this object before calling setState() to ensure the object is still in the tree.
E/flutter (19298): This error might indicate a memory leak if setState() is being called because another object is retaining a reference to this State object after it has been removed from the tree. To avoid memory leaks, consider breaking the reference to this object during dispose().
E/flutter (19298): #0     

 

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

Recommended Posts

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

انا عامل bottom navigation bar ولما اتنقل بشكل سريع بين الازار فيه تحدث هذا المشكله اما لو كان تنقلي بطي بحيث اعطي كل صفحه وقت طويل قليلا لا تحدث لدي 

ربما لايتم تشكيل المكونات بالسرعة الممطلوبة لأنه تجلب بيانات من القاعدة، أيضا تغيير ال screen ومازالت عملية غير متزامنة تعمل في الخلفية.

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

  • 1

يبدو أن هنالك أوبجكت أخر يقوم بتعديل الحالة بعد أن زال المكون Component  يمكنك أن تحاول بطريقة بسيطة عمل فحص  لحالة المكون أن كان مثبت mount و أن كان المكون مثبت فقم بعمل بتحديث الحالة  و أن لم يكن فلا تقم بتغيير الحالة كالتالي:

if (!this.mounted) return;

setState(){
    /** **/
}

 

 

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

  • 1

سبب المشكلة هو استدعاء:

setState()

على عنصر قد تم حذفه أي أنه ليس موجود فعليا ضمن widget tree.

حاول التحقق بشرط هل ما تريد تحديثه موجود فعلا؟

if (mounted) {
  setState(() {
    /** **/
  });
}

يتم استدعاء dispose من قبل Flutter عند حذف widget ما.

تأكد من تهيئة الحالة:

void initState() {
  ...
}

 

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

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

سبب المشكلة هو استدعاء:


setState()

على عنصر قد تم حذفه أي أنه ليس موجود فعليا ضمن widget tree.

حاول التحقق بشرط هل ما تريد تحديثه موجود فعلا؟


if (mounted) {
  setState(() {
    /** **/
  });
}

يتم استدعاء dispose من قبل Flutter عند حذف widget ما.

تأكد من تهيئة الحالة:


void initState() {
  ...
}

 

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

انا عامل bottom navigation bar ولما اتنقل بشكل سريع بين الازار فيه تحدث هذا المشكله اما لو كان تنقلي بطي بحيث اعطي كل صفحه وقت طويل قليلا لا تحدث لدي 

 

بتاريخ 8 ساعات قال Nuhla Almasri:

يبدو أن هنالك أوبجكت أخر يقوم بتعديل الحالة بعد أن زال المكون Component  يمكنك أن تحاول بطريقة بسيطة عمل فحص  لحالة المكون أن كان مثبت mount و أن كان المكون مثبت فقم بعمل بتحديث الحالة  و أن لم يكن فلا تقم بتغيير الحالة كالتالي:


if (!this.mounted) return;

setState(){
    /** **/
}

 

 

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

انا عامل bottom navigation bar والمشكله تحدث في حالة تنقلي السريع بين نوافذه

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

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

ربما لايتم تشكيل المكونات بالسرعة الممطلوبة لأنه تجلب بيانات من القاعدة، أيضا تغيير ال screen ومازالت عملية غير متزامنة تعمل في الخلفية.

نعم يبدو الام كذلك ولكن هل هذا الامر يشكل مشكله على عمل التطبيق او هذا الرساله او ما يحدث بسببها؟ام الامر عادي

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

  • 0
بتاريخ منذ ساعة مضت قال مروان مروان3:

نعم يبدو الام كذلك ولكن هل هذا الامر يشكل مشكله على عمل التطبيق او هذا الرساله او ما يحدث بسببها؟ام الامر عادي

هل استمرت المشكلة حتى بعد محاوطة تغيير الحالة باختبار قيمة الخاصية mounted .؟

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

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...