Skip to content

Instantly share code, notes, and snippets.

@magicleon94
Created September 1, 2020 07:57
Show Gist options
  • Save magicleon94/39642bf637e12c6770f264ba71d8c041 to your computer and use it in GitHub Desktop.
Save magicleon94/39642bf637e12c6770f264ba71d8c041 to your computer and use it in GitHub Desktop.
Regional report bloc
import 'package:corona_italy/common/closable_bloc.dart';
import 'package:corona_italy/features/infection_report/bloc/regional/regional_report_bloc_event.dart';
import 'package:corona_italy/features/infection_report/bloc/regional/regional_report_bloc_state.dart';
import 'package:corona_italy/features/infection_report/model/regional/regional_report_request.dart';
import 'package:corona_italy/features/infection_report/model/regional/regional_report_vm.dart';
import 'package:corona_italy/features/infection_report/service/infections_report_service.dart';
class RegionalReportBloc
extends ClosableBloc<RegionalReportBlocEvent, RegionalReportState> {
final InfectionsReportService service;
RegionalReportBloc(this.service, {RegionalReportState initialState})
: super(initialState ?? RegionalReportIdle());
@override
Stream<RegionalReportState> mapEventToState(
RegionalReportBlocEvent event) async* {
switch (event.runtimeType) {
case RegionalReportFetch:
try {
yield RegionalReportLoading();
final model = await _fetchRegionalReport();
yield RegionalReportLoaded(model);
} catch (e) {
yield RegionalReportLoadingError(e.toString());
}
break;
default:
throw UnsupportedError('Event not supported');
break;
}
}
Future<RegionalReportsVm> _fetchRegionalReport() async {
final response = await service.getRegionalReport(RegionalReportRequest());
final model = RegionalReportsVm.fromDto(response);
return model;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment