马良AI写作初始化仓库
This commit is contained in:
99
AINoval/lib/blocs/subscription/subscription_bloc.dart
Normal file
99
AINoval/lib/blocs/subscription/subscription_bloc.dart
Normal file
@@ -0,0 +1,99 @@
|
||||
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<SubscriptionEvent, SubscriptionState> {
|
||||
final SubscriptionRepositoryImpl subscriptionRepository;
|
||||
|
||||
SubscriptionBloc(this.subscriptionRepository) : super(SubscriptionInitial()) {
|
||||
on<LoadSubscriptionPlans>(_onLoadSubscriptionPlans);
|
||||
on<LoadSubscriptionStatistics>(_onLoadSubscriptionStatistics);
|
||||
on<CreateSubscriptionPlan>(_onCreateSubscriptionPlan);
|
||||
on<UpdateSubscriptionPlan>(_onUpdateSubscriptionPlan);
|
||||
on<DeleteSubscriptionPlan>(_onDeleteSubscriptionPlan);
|
||||
on<ToggleSubscriptionPlanStatus>(_onToggleSubscriptionPlanStatus);
|
||||
}
|
||||
|
||||
Future<void> _onLoadSubscriptionPlans(
|
||||
LoadSubscriptionPlans event,
|
||||
Emitter<SubscriptionState> emit,
|
||||
) async {
|
||||
emit(SubscriptionLoading());
|
||||
try {
|
||||
final plans = await subscriptionRepository.getAllPlans();
|
||||
emit(SubscriptionPlansLoaded(plans));
|
||||
} catch (e) {
|
||||
emit(SubscriptionError(e.toString()));
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _onLoadSubscriptionStatistics(
|
||||
LoadSubscriptionStatistics event,
|
||||
Emitter<SubscriptionState> emit,
|
||||
) async {
|
||||
emit(SubscriptionLoading());
|
||||
try {
|
||||
final statistics = await subscriptionRepository.getSubscriptionStatistics();
|
||||
emit(SubscriptionStatisticsLoaded(statistics));
|
||||
} catch (e) {
|
||||
emit(SubscriptionError(e.toString()));
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _onCreateSubscriptionPlan(
|
||||
CreateSubscriptionPlan event,
|
||||
Emitter<SubscriptionState> emit,
|
||||
) async {
|
||||
try {
|
||||
await subscriptionRepository.createPlan(event.plan);
|
||||
// 重新加载订阅计划列表
|
||||
add(LoadSubscriptionPlans());
|
||||
} catch (e) {
|
||||
emit(SubscriptionError(e.toString()));
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _onUpdateSubscriptionPlan(
|
||||
UpdateSubscriptionPlan event,
|
||||
Emitter<SubscriptionState> emit,
|
||||
) async {
|
||||
try {
|
||||
await subscriptionRepository.updatePlan(event.planId, event.plan);
|
||||
// 重新加载订阅计划列表
|
||||
add(LoadSubscriptionPlans());
|
||||
} catch (e) {
|
||||
emit(SubscriptionError(e.toString()));
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _onDeleteSubscriptionPlan(
|
||||
DeleteSubscriptionPlan event,
|
||||
Emitter<SubscriptionState> emit,
|
||||
) async {
|
||||
try {
|
||||
await subscriptionRepository.deletePlan(event.planId);
|
||||
// 重新加载订阅计划列表
|
||||
add(LoadSubscriptionPlans());
|
||||
} catch (e) {
|
||||
emit(SubscriptionError(e.toString()));
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _onToggleSubscriptionPlanStatus(
|
||||
ToggleSubscriptionPlanStatus event,
|
||||
Emitter<SubscriptionState> emit,
|
||||
) async {
|
||||
try {
|
||||
await subscriptionRepository.togglePlanStatus(event.planId, event.active);
|
||||
// 重新加载订阅计划列表
|
||||
add(LoadSubscriptionPlans());
|
||||
} catch (e) {
|
||||
emit(SubscriptionError(e.toString()));
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user