ویرگول
ورودثبت نام
Adnan Kamali | عدنان کمالی
Adnan Kamali | عدنان کمالیمن عدنان کمالی چاهوئی هستم و برنامه نویس و درحال تبدیل شدن به مهندس کامپیوتر
Adnan Kamali | عدنان کمالی
Adnan Kamali | عدنان کمالی
خواندن ۲ دقیقه·۵ ماه پیش

با Builder و Consumer پرفرمنس رو توی فلاتر بالاتر ببر

پرفرمنس با بیلدر های استیت منجمنت
پرفرمنس با بیلدر های استیت منجمنت

استیت منجمنت چیه؟

بطور خلاصه برای اینکه بتونیم UI خودمون رو آپدیت کنیم و دیتای جدیدی رو توی صفحه به نمایش بذاریم نیازه که وضعیت رو مدیریت و ریفرش کنیم که برای مثال statefull با استفاده از setState که داره میاد کل اون ویجت رو ریفرش میکنه . مسئله همینجاست که کل ویجتو ریفرش میکنه و اگر یک صفحه داشته باشیم که با statefull نوشته شده باشه و بخوایم یک قسمت کوچیکی رو تغییر بدیم کل صفحه ریفرش میشه
(شوخی: مثل این میمونه که دکتر بخواد پای بیمار رو عمل کنه ولی بیاد کل بدن رو بیهوش کنه :) )

خب دکتر راه حل چیه؟

راه حل برای این مورد اینه که فقط پای بیمار رو بیحسی بزنی یعنی اینکه اون قسمت رو فقط با statefull باز نویسی کنی و بقیه ویجت رو با stateless بزنی

یکم راه حل رو بهتر کنیم و از builder ها استفاده کنیم؟

معمولا ما از استیت منجمنت های مختلف استفاده می کنیم مثل provider که میاد یه بیلدری تحت عنوان Consumer در اختیار ما میذاره که هر زمانی که changenotifier رو کال کردیم فقط اون قسمت از ویجت ما که توی Consumer هست آپدیت میشه یا برای استیت منجمنت بلاک BlocBuilder داریم برای ری بیلد

بدانید و آگاه باشید که

stateless هم برای خودش بیلدر داره که اون هم هست StatefulBuilder که میاد فانکشن setState رو برامون فراهم میکنه و میتونیم توی اون یک تغییر استیت انجام بدیم که نمونش رو ببینید

await showDialog<void>( context: context, builder: (BuildContext context) { int? selectedRadio = 0; return AlertDialog( content: StatefulBuilder( builder: (BuildContext context, StateSetter setState) { return Column( mainAxisSize: MainAxisSize.min, children: List<Widget>.generate(4, (int index) { return Radio<int>( value: index, groupValue: selectedRadio, d: (int? value) { setState(() => selectedRadio = value); }, ); }), ); }, ), ); }, );


خیلی خب امیدوارم مطلب براتون مفید واقع شده باشه و حتما از بیلدر ها استفاده کنید

عدنان کمالی | Adnan Kamali

flutterperformanceفلاتر
۲
۰
Adnan Kamali | عدنان کمالی
Adnan Kamali | عدنان کمالی
من عدنان کمالی چاهوئی هستم و برنامه نویس و درحال تبدیل شدن به مهندس کامپیوتر
شاید از این پست‌ها خوشتان بیاید