Advertisement
rifki_cs29

SearckKeywordBloc

Apr 17th, 2022
1,208
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Dart 1.77 KB | None | 0 0
  1. part of 'search_keyword_bloc.dart';
  2.  
  3. abstract class SearchKeywordEvent extends Equatable {
  4.   const SearchKeywordEvent();
  5.  
  6.   @override
  7.   List<Object> get props => [];
  8. }
  9.  
  10. class OnChangeKeyword extends SearchKeywordEvent {
  11.   final String keyword;
  12.  
  13.   const OnChangeKeyword(this.keyword);
  14.  
  15.   @override
  16.   List<Object> get props => [keyword];
  17. }
  18.  
  19.  
  20.  
  21. // STATE
  22. part of 'search_keyword_bloc.dart';
  23.  
  24. class SearchKeywordState extends Equatable {
  25.   final String? keyword;
  26.  
  27.   const SearchKeywordState({
  28.     this.keyword,
  29.   });
  30.  
  31.   SearchKeywordState copyWith({
  32.     String? keyword,
  33.   }) {
  34.     return SearchKeywordState(
  35.       keyword: keyword ?? this.keyword,
  36.     );
  37.   }
  38.  
  39.   factory SearchKeywordState.initial() {
  40.     return const SearchKeywordState(
  41.       keyword: null,
  42.     );
  43.   }
  44.  
  45.   @override
  46.   List<Object?> get props => [keyword];
  47. }
  48.  
  49.  
  50. //BLOC
  51. import 'package:bloc/bloc.dart';
  52. import 'package:equatable/equatable.dart';
  53. import 'package:rxdart/rxdart.dart';
  54.  
  55. part 'search_keyword_event.dart';
  56. part 'search_keyword_state.dart';
  57.  
  58. class SearchKeywordBloc extends Bloc<SearchKeywordEvent, SearchKeywordState> {
  59.   SearchKeywordBloc() : super(SearchKeywordState.initial()) {
  60.     on<OnChangeKeyword>(
  61.       (event, emit) {
  62.         if (event.keyword.isNotEmpty == true) {
  63.           emit(
  64.             SearchKeywordState(
  65.               keyword: event.keyword,
  66.             ),
  67.           );
  68.         } else {
  69.           emit(
  70.             const SearchKeywordState(
  71.               keyword: '',
  72.             ),
  73.           );
  74.         }
  75.       },
  76.       transformer: debounce(const Duration(milliseconds: 500)),
  77.     );
  78.   }
  79. }
  80.  
  81. EventTransformer<MyEvent> debounce<MyEvent>(Duration duration) {
  82.   return (events, mapper) => events.debounceTime(duration).flatMap(mapper);
  83. }
  84.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement