import
'package:bloc/bloc.dart'
;
import
'package:medcomp/events/search.event.dart'
;
import
'package:medcomp/models/search.model.dart'
;
import
'package:medcomp/repositories/search.repo.dart'
;
import
'package:medcomp/states/search.state.dart'
;
class
SearchBloc extends Bloc<SearchEvent, SearchState> {
@override
SearchState get initialState => SearchStateNotLoaded();
SearchRepo _searchRepo = SearchRepo();
@override
Stream<SearchState> mapEventToState(SearchEvent event) async* {
if
(event is SearchEventLoadData) {
yield SearchStateLoading();
try
{
ResultModel resultModel = await
this
._searchRepo.getDetails(event.strList.last);
event.dataList.add(resultModel);
if
(search == null) {
String error =
this
._searchRepo.message;
yield SearchStateError(error);
}
else
{
yield SearchStateLoaded(event.strList, event.dataList);
}
}
catch
(e) {
yield SearchStateError(e);
}
}
if
(event is SearchEventPopSearch) {
try
{
if
(state is SearchStateLoaded) {
var oldState = (state as SearchStateLoaded);
yield SearchStateLoading();
oldState.strList.removeLast();
oldState.dataList.removeLast();
yield SearchStateLoaded(oldState.strList, oldState.dataList);
}
else
{
yield SearchStateError(
'state is SearchStateLaoded false'
);
}
}
catch
(e) {
yield SearchStateError(
'Error in search remove $e'
);
}
}
}
}