-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathfeed_bloc.dart
47 lines (41 loc) · 1.15 KB
/
feed_bloc.dart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import 'dart:async';
import 'package:devour/domain/meme/abstract_meme_model.dart';
import 'package:devour/infrastructure/meme_scrapper/reddit_scrapper.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:freezed_annotation/freezed_annotation.dart';
import 'package:injectable/injectable.dart';
part 'feed_event.dart';
part 'feed_state.dart';
part 'feed_bloc.freezed.dart';
const int kMemeChunkSize = 20;
@injectable
class FeedBloc extends Bloc<FeedEvent, FeedState> {
RedditScrapperFacade redditScrapper;
/// BLoC for feed widget.
FeedBloc(this.redditScrapper) : super(FeedState.loading());
@override
Stream<FeedState> mapEventToState(
FeedEvent event,
) async* {
yield* event.map(
init: (e) async* {
yield FeedState.loading();
final scrappedMemes = await redditScrapper.getMemes(kMemeChunkSize);
yield state.copyWith(
isLoading: false,
memes: scrappedMemes,
iterator: 0,
);
},
like: (e) async* {
yield state;
},
refresh: (e) async* {
yield state;
},
next: (e) async* {
yield state;
},
);
}
}