import 'dart:async'; import './kanji_event.dart'; import './kanji_state.dart'; import 'package:bloc/bloc.dart'; import 'package:jisho_study_tool/services/jisho_api/kanji_search.dart'; import 'package:jisho_study_tool/services/kanji_suggestions.dart'; export './kanji_event.dart'; export './kanji_state.dart'; class KanjiBloc extends Bloc { KanjiBloc() : super(KanjiSearchInitial()); @override Stream mapEventToState(KanjiEvent event) async* { if (event is GetKanji) { yield KanjiSearchLoading(); try { final kanji = await fetchKanji(event.kanjiSearchString); if (kanji.found) yield KanjiSearchFinished(kanji: kanji); else yield KanjiSearchError('Something went wrong'); } on Exception { yield KanjiSearchError('Something went wrong'); } } else if (event is GetKanjiSuggestions) { final suggestions = kanjiSuggestions(event.searchString); yield KanjiSearchInput(suggestions); } else if (event is ReturnToInitialState) { yield KanjiSearchInitial(); } } }