import 'package:bloc/bloc.dart'; import 'package:dartz/dartz.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; import 'package:injectable/injectable.dart'; import '../../../domain/analytic/analytic.dart'; import '../../../domain/analytic/repositories/i_analytic_repository.dart'; part 'sales_loader_event.dart'; part 'sales_loader_state.dart'; part 'sales_loader_bloc.freezed.dart'; @injectable class SalesLoaderBloc extends Bloc { final IAnalyticRepository _analyticRepository; SalesLoaderBloc(this._analyticRepository) : super(SalesLoaderState.initial()) { on(_onSalesLoaderEvent); } Future _onSalesLoaderEvent( SalesLoaderEvent event, Emitter emit, ) async { emit(state.copyWith(isFetching: true, failureOptionSales: none())); final result = await _analyticRepository.getSales( dateFrom: DateTime.now().subtract(const Duration(days: 30)), dateTo: DateTime.now(), ); var data = result.fold( (f) => state.copyWith(failureOptionSales: optionOf(f)), (sales) => state.copyWith(sales: sales), ); emit(data.copyWith(isFetching: false)); } }