// lib/presentation/offer/bloc/offer_bloc.dart import 'package:bloc/bloc.dart'; import 'package:proxibuy/presentation/offer/bloc/offer_event.dart'; import 'package:proxibuy/presentation/offer/bloc/offer_state.dart'; class OffersBloc extends Bloc { OffersBloc() : super(OffersInitial()) { on(_onOffersReceivedFromMqtt); on(_onClearOffers); // رویداد جدید برای پاک کردن دیتا } void _onOffersReceivedFromMqtt( OffersReceivedFromMqtt event, Emitter emit, ) { // فقط در صورتی که لیست جدید خالی نباشد، آن را جایگزین کن if (event.offers.isNotEmpty) { emit(OffersLoadSuccess(event.offers)); } // اگر لیست جدید خالی بود، و قبلا دیتایی داشتیم، حالت را تغییر نده // این کار از نمایش صفحه خالی جلوگیری می‌کند else if (state is! OffersLoadSuccess) { // اگر اولین بار است و لیست خالی است، حالت موفقیت با لیست خالی را نشان بده emit(const OffersLoadSuccess([])); } } // برای زمانی که مثلا کاربر GPS را خاموش می‌کند void _onClearOffers(ClearOffers event, Emitter emit) { emit(OffersInitial()); } } // مدیریت رویداد جدید void _onOffersReceivedFromMqtt( OffersReceivedFromMqtt event, Emitter emit, ) { // جایگزین کردن لیست پیشنهادها با داده‌های جدید emit(OffersLoadSuccess(event.offers)); }