ladle_desktop/lib/bloc/scoop_search_bloc.dart

32 lines
924 B
Dart

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(),
);
}
}