import 'dart:async'; import 'package:bloc/bloc.dart'; import 'package:equatable/equatable.dart'; import 'package:farm_tpf/data/repository/repository.dart'; import 'package:farm_tpf/models/Supply.dart'; import 'package:farm_tpf/utils/bloc/infinity_scroll_bloc.dart'; import 'package:meta/meta.dart'; part 'supply_event.dart'; part 'supply_state.dart'; class SupplyBloc extends Bloc { final Repository repository; SupplyBloc({@required this.repository}) : super(SupplyInitial()); @override Stream mapEventToState( SupplyEvent event, ) async* { if (event is DataFetched) { try { final response = await repository.getSupplies(event.type); List supplies = response.map((supply) { if (supply.id == event.selectedId) { supply.isSelected = true; } return supply; }).toList(); yield SupplySuccess(items: supplies); } catch (_) { yield SupplyFailure(); } } else if (event is OnRefresh) { try { final response = await repository.getSupplies(event.type); List supplies = response.map((supply) { if (supply.id == event.selectedId) { supply.isSelected = true; } return supply; }).toList(); yield SupplySuccess(items: supplies); } catch (_) { yield SupplyFailure(); } } } }