Skip to content

Commit 7d40fb4

Browse files
committed
add database
1 parent b9b7cc0 commit 7d40fb4

31 files changed

+441
-179
lines changed

lib/src/app.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ class App extends StatelessWidget {
3131
MainScreen.routeName: (context) => MainScreen(),
3232
GenreScreen.routeName: (context) => GenreScreen(),
3333
DetailMovieScreen.routeName: (context) => DetailMovieScreen(),
34+
FavoriteScreen.routeName: (context) => FavoriteScreen(),
3435
},
3536
);
3637
}

lib/src/blocs/blocs.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@ export 'genre_bloc/blocs.dart';
44
export 'setting_bloc/blocs.dart';
55
export 'detail_movie_bloc/blocs.dart';
66
export 'main_bloc/blocs.dart';
7+
export 'favorite_bloc/blocs.dart';

lib/src/blocs/detail_movie_bloc/detail_movie_bloc.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import 'package:moviesdb/src/locator.dart';
66
import 'package:moviesdb/src/repositories/repositories.dart';
77

88
class DetailMovieBloc extends Bloc<BaseEvent, BaseState> {
9-
MoviesRepositories moviesRepositories = locator<MoviesRepositories>();
9+
MoviesRepository moviesRepositories = locator<MoviesRepository>();
1010

1111
@override
1212
BaseState get initialState => InitState();
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export 'favorite_event.dart';
2+
export 'favorite_state.dart';
3+
export 'favorite_bloc.dart';
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import 'package:flutter_bloc/flutter_bloc.dart';
2+
import 'package:moviesdb/src/blocs/base_bloc/base.dart';
3+
import 'package:moviesdb/src/blocs/blocs.dart';
4+
import 'package:moviesdb/src/locator.dart';
5+
import 'package:moviesdb/src/repositories/repositories.dart';
6+
7+
class FavoriteBloc extends Bloc<BaseEvent, BaseState> {
8+
final FavoriteRepository repository = locator<FavoriteRepository>();
9+
10+
@override
11+
BaseState get initialState => InitState();
12+
13+
@override
14+
Stream<BaseState> mapEventToState(BaseEvent event) async* {
15+
if (event is ClickedFavorite) {
16+
try {
17+
yield (LoadingState());
18+
final result = await repository.isFavorite(event.movie);
19+
if (result == true) {
20+
await repository.deleteFavorite(event.movie);
21+
yield (NormalState());
22+
} else if (result == false) {
23+
await repository.addFavorite(event.movie);
24+
yield (FavoriteState());
25+
}
26+
} catch (e) {
27+
yield (ErrorState(data: e.toString()));
28+
}
29+
} else if (event is CheckFavorite) {
30+
try {
31+
yield (LoadingState());
32+
final result = await repository.isFavorite(event.movie);
33+
yield (result == true ? FavoriteState() : NormalState());
34+
} catch (e) {
35+
yield (ErrorState(data: e.toString()));
36+
}
37+
} else if (event is GetFavorites) {
38+
try {
39+
yield (LoadingState());
40+
final result = await repository.getFavorites();
41+
yield (LoadedState(data: result));
42+
} catch (e) {
43+
yield (ErrorState(data: e.toString()));
44+
}
45+
}
46+
}
47+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import 'package:moviesdb/src/blocs/base_bloc/base.dart';
2+
import 'package:moviesdb/src/data/models/models.dart';
3+
4+
class GetFavorites extends BaseEvent {}
5+
6+
class CheckFavorite extends BaseEvent {
7+
final Movie movie;
8+
9+
CheckFavorite(this.movie);
10+
}
11+
12+
class ClickedFavorite extends BaseEvent {
13+
final Movie movie;
14+
15+
ClickedFavorite(this.movie);
16+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import 'package:moviesdb/src/blocs/base_bloc/base.dart';
2+
3+
class FavoriteState extends BaseState {}
4+
5+
class NormalState extends BaseState {}

lib/src/blocs/genre_bloc/genre_bloc.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import 'package:moviesdb/src/repositories/repositories.dart';
77
import 'package:rxdart/rxdart.dart';
88

99
class GenreBloc extends Bloc<BaseEvent, BaseState> {
10-
MoviesRepositories moviesRepositories = locator<MoviesRepositories>();
10+
MoviesRepository moviesRepositories = locator<MoviesRepository>();
1111
bool loadingMore = false;
1212

1313
@override

lib/src/blocs/home_bloc/home_bloc.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import 'package:moviesdb/src/locator.dart';
77
import 'package:moviesdb/src/repositories/repositories.dart';
88

99
class HomeBloc extends Bloc<BaseEvent, BaseState> {
10-
MoviesRepositories moviesRepositories = locator<MoviesRepositories>();
10+
MoviesRepository moviesRepositories = locator<MoviesRepository>();
1111

1212
@override
1313
BaseState get initialState => InitState();

lib/src/blocs/setting_bloc/setting_bloc.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import 'package:moviesdb/src/repositories/repositories.dart';
66
import 'package:package_info/package_info.dart';
77

88
class SettingBloc extends Bloc<BaseEvent, BaseState> {
9-
SettingRepositories settingRepositories = locator<SettingRepositories>();
9+
SettingRepository settingRepositories = locator<SettingRepository>();
1010

1111
@override
1212
BaseState get initialState => InitState();

0 commit comments

Comments
 (0)