Skip to content

Commit bc3f15a

Browse files
committed
feat(feed): add silent loading state
- Added HeadlinesFeedLoadingSilently state - Implemented buildWhen for silent loading
1 parent 24f7c98 commit bc3f15a

File tree

3 files changed

+16
-1
lines changed

3 files changed

+16
-1
lines changed

lib/headlines-feed/bloc/headlines_feed_bloc.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ class HeadlinesFeedBloc extends Bloc<HeadlinesFeedEvent, HeadlinesFeedState> {
8686
if (state is HeadlinesFeedLoaded &&
8787
(state as HeadlinesFeedLoaded).hasMore) {
8888
final currentState = state as HeadlinesFeedLoaded;
89-
emit(HeadlinesFeedLoading());
89+
emit(HeadlinesFeedLoadingSilently());
9090
try {
9191
final response = await _headlinesRepository.getHeadlines(
9292
limit: _headlinesFetchLimit,

lib/headlines-feed/bloc/headlines_feed_state.dart

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,15 @@ sealed class HeadlinesFeedState extends Equatable {
1616
/// {@endtemplate}
1717
final class HeadlinesFeedLoading extends HeadlinesFeedState {}
1818

19+
/// {@template headlines_feed_loading}
20+
/// State indicating that the headlines feed is being loaded
21+
/// without a full screen loading widget being showed.
22+
///
23+
/// usefull for inifinity scrolling fetches beyonf the first one
24+
/// {@endtemplate}
25+
final class HeadlinesFeedLoadingSilently extends HeadlinesFeedState {}
26+
27+
1928
/// {@template headlines_feed_loaded}
2029
/// State indicating that the headlines feed has been loaded successfully,
2130
/// potentially with applied filters.

lib/headlines-feed/view/headlines_feed_page.dart

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,8 @@ class _HeadlinesFeedViewState extends State<_HeadlinesFeedView> {
112112
],
113113
),
114114
body: BlocBuilder<HeadlinesFeedBloc, HeadlinesFeedState>(
115+
buildWhen: (previous, current) =>
116+
current is! HeadlinesFeedLoadingSilently,
115117
builder: (context, state) {
116118
switch (state) {
117119
case HeadlinesFeedLoading():
@@ -120,6 +122,10 @@ class _HeadlinesFeedViewState extends State<_HeadlinesFeedView> {
120122
headline: 'Loading...',
121123
subheadline: 'Fetching headlines',
122124
);
125+
// this silentcase will never be reached
126+
// it here just to fullfill the switch comprehensive check
127+
case HeadlinesFeedLoadingSilently():
128+
return const Placeholder();
123129
case HeadlinesFeedLoaded():
124130
return RefreshIndicator(
125131
onRefresh: () async {

0 commit comments

Comments
 (0)