تابستون داره تموم میشه ها، فرصت‌ها محدودن کلی آفر جذاب در کمپین تابستون🔥👇
۰ ثانیه
۰ دقیقه
۰ ساعت
۴ Ali Rah
آپدیت لیست تسک‌های سرچ شده؟
جامعه فلاتر ایجاد شده در ۲۳ اسفند ۱۴۰۰

سلام

اگه روی task ای که سرچ شده کلیک کنیم و به صفحه ادیت بریم و اون رو ادیت کنیم و دوباره به صفحه هوم برگردیم ، کل تسک‌های داخل box نشون داده میشه در صورتی که باید فقط تسک هایی که مرتبط با اون کلمه سرچ شده هستند به کاربر نشون داده بشه.این مشکل رو چطوری میشه حل کرد؟

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

وقتی تسک رو ادیت میکنید موقع save کردن تسک و برگشت به صفحه اول اپ set state رو کجا قرار دادید؟؟؟

محمد حسین سخایی ۲۵ اسفند ۱۴۰۰، ۱۵:۰۶

مشکل اینه که وقتی تغیری روی box انجام میشه TaskListStarted به عنوان event به bloc ارسال میشه و باعث میشه کل تسک‌ها به کاربر نشون داده بشه.این ارتباط رو نمیدونم چطوری باید ایجاد کرد که وقتی تغییری روی repository ایجاد شد متد onchanged مربوط به textfield کال بشه و TaskListSearch به عنوان event به bloc ارسال بشه نه TaskListStarted

امکانش هست که چند تا Consumer تعریف کرد و از repository بگیم که مثلا این Consumer دوباره ساخته بشه؟

من طبق آموزش استاد پیش رفتم و این مشکلی هست که در اپ وجود داره و اشاره ای بهش نشده

Ali Rah ۲۵ اسفند ۱۴۰۰، ۲۳:۱۷

فک میکنم اونجا توی cosumer که صفحه اپدیت میشه و یه ایونت جدید میفرسی بجای ایونت taskListStarted از taskListSearch استفاده کن بجای کلمه سرچ هم از controller.text استفاده کن درست بشه

hojat ghanbarzadeh ۰۷ فروردین ۱۴۰۱، ۰۰:۱۱

داخل متد builder مربوط به Consumer باید چک کنیم که اگر TextField پر بود ایونته TaskListSearch به بلاک ارسال بشه و اگه خالی بود TaskListStarted به بلاک ارسال بشه.قطعه کد مربوطه رو قرار میدم:

Expanded(
                child: Consumer>(
                  builder: (context, value, child) {
                    if (searchTextFieldController.text.isEmpty) {
                      context.read().add(TaskListStarted());
                    } else {
                      context
                          .read()
                          .add(TaskListSearch(searchTextFieldController.text));
                    }
                    return BlocBuilder(
                        builder: (context, state) {
                      if (state is TaskListSuccess) {
                        return _TaskList(items: state.items);
                      } else if (state is TaskListInitial ||
                          state is TaskListLoading) {
                        return Center(
                          child: CircularProgressIndicator(),
                        );
                      } else if (state is TaskListError) {
                        return Center(
                          child: Text(state.errorMessage),
                        );
                      } else if (state is TaskListEmpty) {
                        return EmptyState();
                      } else
                        throw Exception('test');
                    });
                  },
                ),
              ),
Ali Rah ۰۷ فروردین ۱۴۰۱، ۲۱:۰۰