Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import 'package:bloc/bloc.dart';
- import 'package:collection/src/iterable_extensions.dart';
- import 'package:equatable/equatable.dart';
- import 'package:test_crocodic/core/error/failure.dart';
- import 'package:test_crocodic/feature/domain/entities/flight.dart';
- import 'package:test_crocodic/feature/domain/entities/flights.dart';
- import 'package:test_crocodic/feature/domain/usecases/get_all_flight_data.dart';
- part 'home_event.dart';
- part 'home_state.dart';
- class HomeBloc extends Bloc<HomeEvent, HomeState> {
- final GetAllFlightData _getAllFlightData;
- List<Flights>? lastData;
- HomeBloc(this._getAllFlightData) : super(HomeInitialState()) {
- on<HomeEvent>((event, emit) async {
- print(event);
- if (event is GetFlightDataEvent) {
- final result = await _getAllFlightData(Params());
- result.fold((failure) {
- if (failure is ServerFailure) {
- emit(ErrorState(message: failure.message));
- }
- if (failure is NetworkFailure) {
- emit(ErrorState(message: failure.message));
- }
- }, (data) {
- lastData = data;
- emit(DataLoadedState(data: data));
- });
- }
- if (event is FilterDataEvent) {
- if (lastData != null && event.filter != "") {
- List<Flight> flightData = [];
- for (var element in lastData!) {
- var filtered = element.flights
- .where(
- (element) =>
- element.countryName
- .toLowerCase()
- .contains(event.filter.toLowerCase()) ||
- element.locationName
- .toLowerCase()
- .contains(event.filter.toLowerCase()) ||
- element.airportName
- .toLowerCase()
- .contains(event.filter.toLowerCase()),
- )
- .toList();
- filtered.forEach((element) {
- flightData.add(element);
- });
- }
- var newMap = flightData.groupListsBy((element) => element.countryId);
- List<Flights> results = [];
- newMap.forEach((key, value) {
- results.add(Flights(
- flights: value,
- countryId: key,
- country: value.first.countryName,
- ));
- });
- print(results);
- emit(DataLoadedState(data: results));
- }
- }
- });
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement