رونمایی از پخته‌ترین و کاربردی‌ترین محصولات آموزشی سون‌لرن با کلی آفرهای ویژه🔥
۰ ثانیه
۰ دقیقه
۰ ساعت
۴ ehsan raze
راهنمایی برای استفاده از bloc
جامعه فلاتر ایجاد شده در ۱۴ فروردین ۱۴۰۲

من چطور میتونم با استفاده از معماری بلاک در یک صفحه 3 عدد  dynamic dropdown  داشته باشم و  زمانی که یک ایتم از dropdown  اولی انتخاب میشود یک درخواست  جدید به event بلاک ارسال شود و بلاک یک درخواست به   ریپازیتوری  ارسال کند و ایتم های دومین dropdown   گرفته شود و همینطور زمانی که یک ایتم از dropdown   دوم انتخاب شد دوباره یک در خواست به  event بلاک ارسال شود و بلاک یک درخواست به  ریپازیتوری  ارسال کند و لیست ایتم‌های سومین dropdown   گرفته شود من می‌خواهم این کار را با معماری بلاک انجام بدهم و هر 3 تا dropdown   در یک صفحه است .

ممنون میشم من را راهنمایی کنید که چطور باید این کا را انجام بدهم 

سلام

در ابتدا به ازای هرکدام از این موارد شما باید یک event داشته باشید که دیتای مربوطه رو دریافت کنه. معمولا در drop down‌ها یک call back برای زمانی که یک ایتم انتخاب میشه وجود داره، شما می‌تونید در اینجا درخواست بزنید که با توجه به ایتم انتخاب شده درخواستتون ارسال بشه و لیست ایتم‌های drop down بعدی دریافت بشه.

همچنین باتوجه به شرایط اون صفحه می‌تونید به ازای هر dropdown یک bloc builder مجزا داشته باشید که تداخل بین state‌ها پیش نیاد (به کمک پارامتر buildWhen)

یلدا محصلی ۱۵ فروردین ۱۴۰۲، ۱۳:۵۵

مشکل من با state بود که هر بار کل state صفحه عوض میشد و من به مشکل می‌خوردم ممنون میشم نمونه کدی که از bloc builder مجزا در یک صفحه و buildWhen استفاده شده باشد را به من بدید

ehsan raze ۱۵ فروردین ۱۴۰۲، ۱۴:۲۳

خط ۷۰ و ۷۵ در تصویر ضمیمه شده دو bloc builder هست که اولی لیست استان هارو نشون میده و دومی شهرهای استان انتخاب شده.

پارامتر buildWhen هم برای این هست که مشخص کنه در یک state مشخص build اتفاق بیفته.

کد زیر هم ویجت مربوط به انتخاب استان هست که در قسمت onSelectProvince رویداد مربوط به گرفتن شهرهای اون استان add میشه.

ProvinceSearchDropDown(
  title: AppStrings.province,
  provinceList: state.provinceList,
  onSelectProvince: (id) {
    provinceId = id;
    context.read().add(RegisterCityEvent(id));
  },
)


بهترین پاسخ
یلدا محصلی ۱۶ فروردین ۱۴۰۲، ۰۷:۵۱

ممنون از شما

ehsan raze ۱۶ فروردین ۱۴۰۲، ۰۸:۲۹