import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:equatable/equatable.dart'; import '../../services/api_service/repositories/impl/subscription_repository_impl.dart'; import '../../models/admin/subscription_models.dart'; part 'subscription_event.dart'; part 'subscription_state.dart'; class SubscriptionBloc extends Bloc { final SubscriptionRepositoryImpl subscriptionRepository; SubscriptionBloc(this.subscriptionRepository) : super(SubscriptionInitial()) { on(_onLoadSubscriptionPlans); on(_onLoadSubscriptionStatistics); on(_onCreateSubscriptionPlan); on(_onUpdateSubscriptionPlan); on(_onDeleteSubscriptionPlan); on(_onToggleSubscriptionPlanStatus); } Future _onLoadSubscriptionPlans( LoadSubscriptionPlans event, Emitter emit, ) async { emit(SubscriptionLoading()); try { final plans = await subscriptionRepository.getAllPlans(); emit(SubscriptionPlansLoaded(plans)); } catch (e) { emit(SubscriptionError(e.toString())); } } Future _onLoadSubscriptionStatistics( LoadSubscriptionStatistics event, Emitter emit, ) async { emit(SubscriptionLoading()); try { final statistics = await subscriptionRepository.getSubscriptionStatistics(); emit(SubscriptionStatisticsLoaded(statistics)); } catch (e) { emit(SubscriptionError(e.toString())); } } Future _onCreateSubscriptionPlan( CreateSubscriptionPlan event, Emitter emit, ) async { try { await subscriptionRepository.createPlan(event.plan); // 重新加载订阅计划列表 add(LoadSubscriptionPlans()); } catch (e) { emit(SubscriptionError(e.toString())); } } Future _onUpdateSubscriptionPlan( UpdateSubscriptionPlan event, Emitter emit, ) async { try { await subscriptionRepository.updatePlan(event.planId, event.plan); // 重新加载订阅计划列表 add(LoadSubscriptionPlans()); } catch (e) { emit(SubscriptionError(e.toString())); } } Future _onDeleteSubscriptionPlan( DeleteSubscriptionPlan event, Emitter emit, ) async { try { await subscriptionRepository.deletePlan(event.planId); // 重新加载订阅计划列表 add(LoadSubscriptionPlans()); } catch (e) { emit(SubscriptionError(e.toString())); } } Future _onToggleSubscriptionPlanStatus( ToggleSubscriptionPlanStatus event, Emitter emit, ) async { try { await subscriptionRepository.togglePlanStatus(event.planId, event.active); // 重新加载订阅计划列表 add(LoadSubscriptionPlans()); } catch (e) { emit(SubscriptionError(e.toString())); } } }