رونمایی از پخته‌ترین و کاربردی‌ترین محصولات آموزشی سون‌لرن با کلی آفرهای ویژه🔥
۰ ثانیه
۰ دقیقه
۰ ساعت
۵ ali forootan
توضیح درباره setState & init State
جامعه فلاتر ایجاد شده در ۰۷ مرداد ۱۴۰۲

سلام یه توضیح درباره کار این دوتا تابع بفرمایید و توی قسمتی که از setState استفاده شد من دلیل این کار رو نفهمیدم دقیقا چرا برای عوض کردن یک مقدار ساده ک خارج از تابع بیلدر هست باید از این تابع استفاده کنیم یعنی متوجه نشدم دلیل استفاده از set state اینجا چیه؟

سلام ووقت بخیر

من سعی می‌کنم در ساده‌ترین حالت کارکرد این دو رو برای شما شرح بدم.

initState : این تابع جزو اولین تابع هایی است که فقط یک بار در هنگام شروع به کار یک صفحه و وارد شدن به ویجت‌تری توسط فلاتر صدا زده میشه لذا شما در این تابع مواردی که نیاز به مقدار دهی اولیه یا صدا زدن دارن میتونین انجام بدین و صفحه خودتون رو آماده به کار کنید.

setState : برای درک کارکرد این تابع باید با مفهوم state آشنا بشین , state به طور کلی وضعیت یک صفحه است در نتیجه هر زمان که وضعیت یک صفحه تغییر پیدا میکنه ما از setState استفاده می‌کنیم تا به فریمورک فلاتر اطلاع بدیم وضعیت تغییر پیدا کرده و با اینکار فلاتر صفحه رو آپدیت میکنه در نتیجه کاربر میتونه وضعیت جدید صفحه رو مشاهده کنه.

اطلاعات تکمیلی : setState , initState

امیررضا بشیری ۰۷ مرداد ۱۴۰۲، ۱۱:۲۵

خیلی هم خوب فقط اینجا من متوجه نشدم چرا از setState استفاده شده و مقدار پیج عوض شده ؟

ali forootan ۰۷ مرداد ۱۴۰۲، ۱۲:۳۰

من چند بار قسمتی که از initState استفاده شده رو نگاه کردم و اصلا متوجه نمیشم دقیقا چه اتفاقی داره میفته pagecontroler داره مقدار پیج رو نگهداری میکنه و اون همیشه مقدارش با page برابره و اصلا نباید set state اجرا بشه


ali forootan ۰۷ مرداد ۱۴۰۲، ۱۳:۱۱

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

ali forootan ۰۷ مرداد ۱۴۰۲، ۱۳:۲۱

سلام مجدد

علی جان من الان موضوعی که در این جلسه داره اتفاق میفته برات توضیح میدم تا کامل متوجه بشی.

آقای شاهینی یک page تعریف میکنه که مقدار اولیه اش برار با مقدار اولیه لیست آیتم‌ها هست : یعنی صفر.

همچنین خود pageController بطور پیشفرض دارای page هست که از نوع geter هست و آیتمی که در pageview نمایش داده میشه رو برمیگردونه بعد آقای شاهینی در داخل initState یک لیسنر اضافه میکنه تا به تغییرات آیتم هایی که در pageview نمایش داده میشه گوش بکنه و یک شرط میزاره که اگر مقدار page که در اول صفر تعیین کرده با مقدار pageController.page.round برابر نبود در داخل متود setState این مقدار رو به page قبلی اضافه کنه حالا چرا از setState استفاده میکنه چون میخواد در متود build جایی که UI رو پیاده سازی کرده تعیین بکنه هر زمان مقدار page برار با آیتم آخر بود آیکون صفحه تغییر پیدا کنه و با لمس کاربر , کاربر به صفحه اصلی اپلیکیشن هدایت بشه و اگر این چنین نبود آیتم بعدی نمایش داده بشه و نیاز داره که از تغییر وضعیت صفحه باخبر بشه.

بهترین پاسخ
امیررضا بشیری ۰۸ مرداد ۱۴۰۲، ۰۶:۳۳