add search fragment

This commit is contained in:
Andrew 2022-09-13 11:13:17 +07:00
parent 72a46116b3
commit 4833b5c18c
8 changed files with 542 additions and 6 deletions

View file

@ -0,0 +1,32 @@
import 'package:bloc/bloc.dart';
import 'package:bloc_concurrency/bloc_concurrency.dart';
import 'package:equatable/equatable.dart';
import '../models/scoop_app_model.dart';
import '../utils/scoop_utils.dart';
part 'scoop_search_event.dart';
part 'scoop_search_state.dart';
class ScoopSearchBloc extends Bloc<ScoopSearchEvent, ScoopSearchState> {
ScoopSearchBloc() : super(ScoopSearchInitial()) {
on<ScoopSearchQueryChanged>(
(event, emit) async {
emit(ScoopSearchLoading());
try {
Map<String, List<ScoopAppModel>> data = {};
if (event.query.isEmpty) {
data = await getAllInstallableApps();
} else {
data = await searchInstallableApps(event.query);
}
emit(ScoopSearchLoaded(data));
} catch (e) {
emit(ScoopSearchError(e.toString()));
}
},
transformer: restartable(),
);
}
}