۷ Turaj Mokhtari
firstWhere
جامعه فلاتر ایجاد شده در ۱۳ آبان ۱۴۰۱
final cartItem=successSate.cartResponse.cartItems.firstWhere((element) => element.id==event.cartItemId);

میشه اینو توضیح بدین اصلا متوجه نشدم چه اتفاقی افتاد

هدف حذف محصول از آیتم‌های سبد هست. تابع firstWhere روی لیست صدا زده میشه و با توجه به ورودی ش، اولین عنصری که اون شرط در موردش صدق کنه رو برمیگردونه. ما از طریق successState به محصولات موجود در سبد دسترسی داریم و میتونیم با استفاده از id دریافت شده از event اون محصول رو در سبد پیدا کنیم (تابع firstWhere) و اقدامات لازم رو انجام بدیم.

هر قسمتی که واضح نگفتم بفرمایید


یلدا محصلی ۱۳ آبان ۱۴۰۱، ۲۰:۵۷

ممنون فقط یه سوال دیگه.. چرا شرط رو اونجور نوشتیم چه جوری میشه شرط و ریترن کرد.. البته سوالم شاید پایه ای و مربوط به دارت باشه

Turaj Mokhtari ۱۳ آبان ۱۴۰۱، ۲۱:۰۵

وقتی بدنه ی تابع شما تک خطی باشه، میتونید به صورت expression هم بنویسیدش. درواقع با این کد پایین معادل هستند:

(element) {
return element.id==event.cartItemId;
}

فکر میکنم با alt+enter هم میتونید این تبدیل رو انجام بدید

یلدا محصلی ۱۴ آبان ۱۴۰۱، ۰۳:۰۰

ممنون منظورم اون نبود.. متشکرم که وقت گذاشتین

Turaj Mokhtari ۱۴ آبان ۱۴۰۱، ۰۳:۴۹

خواهش میکنم. کدوم قسمت منظورتون بود؟

یلدا محصلی ۱۴ آبان ۱۴۰۱، ۰۵:۲۱
(element) => element.id==event.cartItemId

ببینید این قسمت داره بولیین برمیگردونه ..بعد چه طور میشه ما کارت ایتم رو میگیریم میریزیم تو cartItem

Turaj Mokhtari ۱۴ آبان ۱۴۰۱، ۱۴:۱۳

تابع firstWhere کارت ایتم رو برمیگردونه. به این معنی که به این تابع میگیم در این لیست اولین عنصری رو به ما برگردون که این شرط درموردش صدق کنه.

ضمن اینکه این تابع یک پارامتر اختیاری orElse هم داره که برای این هست که در صورتی که عنصری در لیست نباشه که مقدار اون بولین براش true باشه، با خطا مواجه نشیم.

بهترین پاسخ
یلدا محصلی ۱۴ آبان ۱۴۰۱، ۱۴:۳۷