import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:maibu_satabot_v2/features/v2/home/domain/usecases/get_home_data_usecase.dart'; import 'package:maibu_satabot_v2/features/v2/home/presentation/bloc/home_v2_event.dart'; import 'package:maibu_satabot_v2/features/v2/home/presentation/bloc/home_v2_state.dart'; class HomeV2Bloc extends Bloc { final GetHomeDataUseCase getHomeDataUseCase; HomeV2Bloc(this.getHomeDataUseCase) : super(const HomeV2Initial()) { on(_onLoadData); on(_onRefresh); on(_onToggleTrendType); } Future _onLoadData( HomeV2LoadData event, Emitter emit, ) async { emit(const HomeV2Loading()); final result = await getHomeDataUseCase(const NoParams()); result.fold( (failure) => emit(HomeV2Error(failure.message)), (data) => emit(HomeV2Loaded(homeData: data)), ); } Future _onRefresh( HomeV2Refresh event, Emitter emit, ) async { if (state is HomeV2Loaded) { final result = await getHomeDataUseCase(const NoParams()); result.fold( (failure) => emit(HomeV2Error(failure.message)), (data) => emit(HomeV2Loaded( homeData: data, trendType: (state as HomeV2Loaded).trendType, )), ); } } void _onToggleTrendType( HomeV2ToggleTrendType event, Emitter emit, ) { if (state is HomeV2Loaded) { final currentState = state as HomeV2Loaded; emit(currentState.copyWith(trendType: event.type)); print('切换趋势类型:${event.type}'); } } }