├── android
├── settings_aar.gradle
├── gradle.properties
├── app
│ ├── src
│ │ ├── main
│ │ │ ├── res
│ │ │ │ ├── mipmap-hdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-mdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xhdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xxhdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xxxhdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── drawable
│ │ │ │ │ └── launch_background.xml
│ │ │ │ └── values
│ │ │ │ │ └── styles.xml
│ │ │ ├── kotlin
│ │ │ │ └── com
│ │ │ │ │ └── example
│ │ │ │ │ └── movingPictures
│ │ │ │ │ └── MainActivity.kt
│ │ │ └── AndroidManifest.xml
│ │ ├── debug
│ │ │ └── AndroidManifest.xml
│ │ └── profile
│ │ │ └── AndroidManifest.xml
│ └── build.gradle
├── gradle
│ └── wrapper
│ │ └── gradle-wrapper.properties
├── .gitignore
├── .settings
│ └── org.eclipse.buildship.core.prefs
├── settings.gradle
├── build.gradle
└── .project
├── ios
├── Flutter
│ ├── Debug.xcconfig
│ ├── Release.xcconfig
│ └── AppFrameworkInfo.plist
├── Runner
│ ├── Runner-Bridging-Header.h
│ ├── Assets.xcassets
│ │ ├── LaunchImage.imageset
│ │ │ ├── LaunchImage.png
│ │ │ ├── LaunchImage@2x.png
│ │ │ ├── LaunchImage@3x.png
│ │ │ ├── README.md
│ │ │ └── Contents.json
│ │ └── AppIcon.appiconset
│ │ │ ├── Icon-App-20x20@1x.png
│ │ │ ├── Icon-App-20x20@2x.png
│ │ │ ├── Icon-App-20x20@3x.png
│ │ │ ├── Icon-App-29x29@1x.png
│ │ │ ├── Icon-App-29x29@2x.png
│ │ │ ├── Icon-App-29x29@3x.png
│ │ │ ├── Icon-App-40x40@1x.png
│ │ │ ├── Icon-App-40x40@2x.png
│ │ │ ├── Icon-App-40x40@3x.png
│ │ │ ├── Icon-App-60x60@2x.png
│ │ │ ├── Icon-App-60x60@3x.png
│ │ │ ├── Icon-App-76x76@1x.png
│ │ │ ├── Icon-App-76x76@2x.png
│ │ │ ├── Icon-App-1024x1024@1x.png
│ │ │ └── Icon-App-83.5x83.5@2x.png
│ ├── AppDelegate.swift
│ ├── Base.lproj
│ │ ├── Main.storyboard
│ │ └── LaunchScreen.storyboard
│ └── Info.plist
├── Runner.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ ├── WorkspaceSettings.xcsettings
│ │ └── IDEWorkspaceChecks.plist
├── Runner.xcodeproj
│ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ ├── WorkspaceSettings.xcsettings
│ │ └── IDEWorkspaceChecks.plist
└── .gitignore
├── .vscode
└── settings.json
├── screenshots
├── 1.png
├── 2.png
├── 3.png
├── 4.png
├── 5.png
├── 6.png
├── 7.png
├── MP-Banner.png
└── moving_pictures_logo_man_boxy-removebg-preview (1).png
├── assets
├── images
│ ├── tempo.jpg
│ ├── johnwick.png
│ ├── the_queens_gambit.png
│ └── the_queens_gambit_movie_poster.jpg
├── logos
│ ├── tmdb-logo.png
│ ├── moving_pictures_logo_man.png
│ ├── moving_pictures_logo_red.png
│ ├── moving_pictures_logo_man_boxy.png
│ └── moving_pictures_logo_man_boxy_no_background.png
└── icons
│ ├── regularIcons
│ ├── google_icon.png
│ ├── search.svg
│ ├── cancel.svg
│ ├── heart_filled.svg
│ ├── info.svg
│ ├── heart.svg
│ ├── home.svg
│ ├── play.svg
│ ├── friends.svg
│ ├── shield.svg
│ ├── share.svg
│ ├── bell.svg
│ └── github.svg
│ └── numberIcons
│ └── 7.svg
├── fonts
├── Roboto
│ ├── Roboto-Black.ttf
│ ├── Roboto-Bold.ttf
│ ├── Roboto-Light.ttf
│ ├── Roboto-Thin.ttf
│ ├── Roboto-Italic.ttf
│ ├── Roboto-Medium.ttf
│ ├── Roboto-Regular.ttf
│ ├── Roboto-BoldItalic.ttf
│ ├── Roboto-ThinItalic.ttf
│ ├── Roboto-BlackItalic.ttf
│ ├── Roboto-LightItalic.ttf
│ └── Roboto-MediumItalic.ttf
└── Montez
│ └── Montez-Regular.ttf
├── analysis_options.yaml
├── lib
├── application
│ ├── home
│ │ ├── casts
│ │ │ ├── casts_event.dart
│ │ │ ├── casts_state.dart
│ │ │ └── casts_bloc.dart
│ │ ├── movies
│ │ │ ├── casts
│ │ │ │ ├── casts_event.dart
│ │ │ │ ├── casts_state.dart
│ │ │ │ └── casts_bloc.dart
│ │ │ ├── genres
│ │ │ │ ├── genres_event.dart
│ │ │ │ ├── genres_state.dart
│ │ │ │ └── genres_bloc.dart
│ │ │ ├── movies
│ │ │ │ ├── movies_state.dart
│ │ │ │ ├── movies_event.dart
│ │ │ │ └── movies_bloc.dart
│ │ │ └── favorite_movies
│ │ │ │ ├── favoritemovies_event.dart
│ │ │ │ ├── favoritemovies_state.dart
│ │ │ │ └── favoritemovies_bloc.dart
│ │ └── series
│ │ │ ├── casts
│ │ │ ├── casts_event.dart
│ │ │ ├── casts_state.dart
│ │ │ └── casts_bloc.dart
│ │ │ ├── genres
│ │ │ ├── genres_event.dart
│ │ │ ├── genres_state.dart
│ │ │ └── genres_bloc.dart
│ │ │ ├── series
│ │ │ ├── series_state.dart
│ │ │ ├── series_event.dart
│ │ │ └── series_bloc.dart
│ │ │ └── favorite_series
│ │ │ ├── favoriteseries_event.dart
│ │ │ ├── favoriteseries_state.dart
│ │ │ └── favoriteseries_bloc.dart
│ ├── auth
│ │ ├── sign_in
│ │ │ ├── sign_in_event.dart
│ │ │ ├── sign_in_state.dart
│ │ │ └── sign_in_bloc.dart
│ │ ├── auth_state.dart
│ │ ├── auth_event.dart
│ │ ├── user_profile
│ │ │ ├── user_profile_event.dart
│ │ │ ├── user_profile_state.dart
│ │ │ └── user_profile_bloc.dart
│ │ └── auth_bloc.dart
│ ├── search
│ │ ├── search_event.dart
│ │ ├── search_state.dart
│ │ └── search_bloc.dart
│ └── People
│ │ ├── people_state.dart
│ │ └── people_event.dart
├── domain
│ ├── home
│ │ ├── shared_classes
│ │ │ ├── cast
│ │ │ │ ├── cast_interface.dart
│ │ │ │ ├── cast_failure.dart
│ │ │ │ ├── cast.dart
│ │ │ │ └── cast.g.dart
│ │ │ ├── genres
│ │ │ │ ├── genre_failure.dart
│ │ │ │ ├── genre.dart
│ │ │ │ └── genre.g.dart
│ │ │ └── videos.dart
│ │ ├── series
│ │ │ ├── favorite_series_interface.dart
│ │ │ ├── serie
│ │ │ │ ├── serie_failure.dart
│ │ │ │ ├── content_ratings.dart
│ │ │ │ ├── serie.g.dart
│ │ │ │ └── serie.dart
│ │ │ ├── favorite_serie
│ │ │ │ └── favorite_serie.dart
│ │ │ ├── serie_sub
│ │ │ │ └── serie_sub.dart
│ │ │ └── series_interface.dart
│ │ └── movies
│ │ │ ├── favorite_movies_interface.dart
│ │ │ ├── movie
│ │ │ ├── movies_failure.dart
│ │ │ ├── release_dates.dart
│ │ │ ├── movie.g.dart
│ │ │ └── movie.dart
│ │ │ ├── favorite_movies
│ │ │ └── favorite_movies.dart
│ │ │ ├── movie_sub
│ │ │ └── movie_sub.dart
│ │ │ └── movies_interface.dart
│ ├── search
│ │ ├── search_interface.dart
│ │ └── search.dart
│ ├── core
│ │ ├── failures.dart
│ │ ├── errors.dart
│ │ └── value_objects.dart
│ ├── auth
│ │ ├── app_user_failure.dart
│ │ ├── auth_failure.dart
│ │ ├── auth_repository_interface.dart
│ │ ├── app_user.g.dart
│ │ └── app_user.dart
│ └── people
│ │ ├── people_failure.dart
│ │ ├── people_interface.dart
│ │ └── people.dart
├── injection.dart
├── presentation
│ ├── core
│ │ ├── app_colors.dart
│ │ ├── component_widgets
│ │ │ ├── flushbar_method.dart
│ │ │ ├── cancel_button_widget.dart
│ │ │ ├── poster_image_widget.dart
│ │ │ ├── age_restriction_widget.dart
│ │ │ ├── saving_in_progress_widget.dart
│ │ │ ├── movie_loading_wigdet.dart
│ │ │ └── primary_button_widget.dart
│ │ ├── constants
│ │ │ ├── language_constants.dart
│ │ │ └── constants.dart
│ │ ├── app_localizations.dart
│ │ └── app_widget.dart
│ ├── signin
│ │ └── sign_in_screen.dart
│ ├── search
│ │ ├── search_screen.dart
│ │ └── widgets
│ │ │ ├── search_bar.dart
│ │ │ ├── search_movies.dart
│ │ │ ├── search_series.dart
│ │ │ └── search_cast.dart
│ ├── splash
│ │ └── splash_screen.dart
│ ├── routes
│ │ └── router.dart
│ ├── home
│ │ ├── movies
│ │ │ ├── movie_info
│ │ │ │ ├── widgets
│ │ │ │ │ ├── genres_list.dart
│ │ │ │ │ └── sub_data.dart
│ │ │ │ └── movie_info.dart
│ │ │ ├── movies_tab_screen.dart
│ │ │ └── widgets
│ │ │ │ └── little_favorite_sub_data_icon.dart
│ │ ├── series
│ │ │ ├── serie_info
│ │ │ │ ├── widgets
│ │ │ │ │ ├── genres_list.dart
│ │ │ │ │ └── sub_data.dart
│ │ │ │ └── serie_info.dart
│ │ │ ├── series_tab_screen.dart
│ │ │ └── widgets
│ │ │ │ └── little_favorite_sub_data_icon.dart
│ │ └── home.dart
│ ├── profile
│ │ └── widgets
│ │ │ ├── github_block.dart
│ │ │ ├── tmdb_block.dart
│ │ │ └── profile_info_block_widget.dart
│ ├── people
│ │ └── widgets
│ │ │ └── people_search_bar.dart
│ ├── main_layout_appbar_navbar
│ │ ├── main_bottom_navigation_bar_widget.dart
│ │ └── main_body_layout.dart
│ └── favorites
│ │ └── favorites.dart
├── infrastructure
│ ├── auth
│ │ └── firebase_user_mapper.dart
│ ├── core
│ │ ├── firebase_injectable_module.dart
│ │ └── firestore_helper.dart
│ ├── home
│ │ ├── casts
│ │ │ └── casts_repository.dart
│ │ ├── series
│ │ │ └── favorite_series_repository.dart
│ │ └── movies
│ │ │ └── favorite_movies_repository.dart
│ └── search
│ │ └── search_repository.dart
└── main.dart
├── .metadata
├── .gitignore
├── LICENSE
├── lang
├── en.json
└── pt.json
└── pubspec.yaml
/android/settings_aar.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 |
--------------------------------------------------------------------------------
/ios/Flutter/Debug.xcconfig:
--------------------------------------------------------------------------------
1 | #include "Generated.xcconfig"
2 |
--------------------------------------------------------------------------------
/ios/Flutter/Release.xcconfig:
--------------------------------------------------------------------------------
1 | #include "Generated.xcconfig"
2 |
--------------------------------------------------------------------------------
/ios/Runner/Runner-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | #import "GeneratedPluginRegistrant.h"
2 |
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "java.configuration.updateBuildConfiguration": "automatic"
3 | }
--------------------------------------------------------------------------------
/screenshots/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/thenifemi/movingPictures/HEAD/screenshots/1.png
--------------------------------------------------------------------------------
/screenshots/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/thenifemi/movingPictures/HEAD/screenshots/2.png
--------------------------------------------------------------------------------
/screenshots/3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/thenifemi/movingPictures/HEAD/screenshots/3.png
--------------------------------------------------------------------------------
/screenshots/4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/thenifemi/movingPictures/HEAD/screenshots/4.png
--------------------------------------------------------------------------------
/screenshots/5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/thenifemi/movingPictures/HEAD/screenshots/5.png
--------------------------------------------------------------------------------
/screenshots/6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/thenifemi/movingPictures/HEAD/screenshots/6.png
--------------------------------------------------------------------------------
/screenshots/7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/thenifemi/movingPictures/HEAD/screenshots/7.png
--------------------------------------------------------------------------------
/assets/images/tempo.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/thenifemi/movingPictures/HEAD/assets/images/tempo.jpg
--------------------------------------------------------------------------------
/assets/images/johnwick.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/thenifemi/movingPictures/HEAD/assets/images/johnwick.png
--------------------------------------------------------------------------------
/assets/logos/tmdb-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/thenifemi/movingPictures/HEAD/assets/logos/tmdb-logo.png
--------------------------------------------------------------------------------
/screenshots/MP-Banner.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/thenifemi/movingPictures/HEAD/screenshots/MP-Banner.png
--------------------------------------------------------------------------------
/fonts/Roboto/Roboto-Black.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/thenifemi/movingPictures/HEAD/fonts/Roboto/Roboto-Black.ttf
--------------------------------------------------------------------------------
/fonts/Roboto/Roboto-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/thenifemi/movingPictures/HEAD/fonts/Roboto/Roboto-Bold.ttf
--------------------------------------------------------------------------------
/fonts/Roboto/Roboto-Light.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/thenifemi/movingPictures/HEAD/fonts/Roboto/Roboto-Light.ttf
--------------------------------------------------------------------------------
/fonts/Roboto/Roboto-Thin.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/thenifemi/movingPictures/HEAD/fonts/Roboto/Roboto-Thin.ttf
--------------------------------------------------------------------------------
/fonts/Montez/Montez-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/thenifemi/movingPictures/HEAD/fonts/Montez/Montez-Regular.ttf
--------------------------------------------------------------------------------
/fonts/Roboto/Roboto-Italic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/thenifemi/movingPictures/HEAD/fonts/Roboto/Roboto-Italic.ttf
--------------------------------------------------------------------------------
/fonts/Roboto/Roboto-Medium.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/thenifemi/movingPictures/HEAD/fonts/Roboto/Roboto-Medium.ttf
--------------------------------------------------------------------------------
/fonts/Roboto/Roboto-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/thenifemi/movingPictures/HEAD/fonts/Roboto/Roboto-Regular.ttf
--------------------------------------------------------------------------------
/fonts/Roboto/Roboto-BoldItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/thenifemi/movingPictures/HEAD/fonts/Roboto/Roboto-BoldItalic.ttf
--------------------------------------------------------------------------------
/fonts/Roboto/Roboto-ThinItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/thenifemi/movingPictures/HEAD/fonts/Roboto/Roboto-ThinItalic.ttf
--------------------------------------------------------------------------------
/assets/images/the_queens_gambit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/thenifemi/movingPictures/HEAD/assets/images/the_queens_gambit.png
--------------------------------------------------------------------------------
/fonts/Roboto/Roboto-BlackItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/thenifemi/movingPictures/HEAD/fonts/Roboto/Roboto-BlackItalic.ttf
--------------------------------------------------------------------------------
/fonts/Roboto/Roboto-LightItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/thenifemi/movingPictures/HEAD/fonts/Roboto/Roboto-LightItalic.ttf
--------------------------------------------------------------------------------
/fonts/Roboto/Roboto-MediumItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/thenifemi/movingPictures/HEAD/fonts/Roboto/Roboto-MediumItalic.ttf
--------------------------------------------------------------------------------
/analysis_options.yaml:
--------------------------------------------------------------------------------
1 | include: package:lint/analysis_options.yaml
2 |
3 | analyzer:
4 |
5 | errors:
6 | # missing_return: error
7 |
--------------------------------------------------------------------------------
/assets/icons/regularIcons/google_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/thenifemi/movingPictures/HEAD/assets/icons/regularIcons/google_icon.png
--------------------------------------------------------------------------------
/assets/logos/moving_pictures_logo_man.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/thenifemi/movingPictures/HEAD/assets/logos/moving_pictures_logo_man.png
--------------------------------------------------------------------------------
/assets/logos/moving_pictures_logo_red.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/thenifemi/movingPictures/HEAD/assets/logos/moving_pictures_logo_red.png
--------------------------------------------------------------------------------
/android/gradle.properties:
--------------------------------------------------------------------------------
1 | org.gradle.jvmargs=-Xmx1536M
2 | android.useAndroidX=true
3 | android.enableJetifier=true
4 | android.enableR8=true
5 |
--------------------------------------------------------------------------------
/assets/logos/moving_pictures_logo_man_boxy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/thenifemi/movingPictures/HEAD/assets/logos/moving_pictures_logo_man_boxy.png
--------------------------------------------------------------------------------
/assets/images/the_queens_gambit_movie_poster.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/thenifemi/movingPictures/HEAD/assets/images/the_queens_gambit_movie_poster.jpg
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/thenifemi/movingPictures/HEAD/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/thenifemi/movingPictures/HEAD/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/thenifemi/movingPictures/HEAD/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/thenifemi/movingPictures/HEAD/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/thenifemi/movingPictures/HEAD/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/assets/logos/moving_pictures_logo_man_boxy_no_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/thenifemi/movingPictures/HEAD/assets/logos/moving_pictures_logo_man_boxy_no_background.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/thenifemi/movingPictures/HEAD/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/thenifemi/movingPictures/HEAD/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/thenifemi/movingPictures/HEAD/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
--------------------------------------------------------------------------------
/screenshots/moving_pictures_logo_man_boxy-removebg-preview (1).png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/thenifemi/movingPictures/HEAD/screenshots/moving_pictures_logo_man_boxy-removebg-preview (1).png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/thenifemi/movingPictures/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/thenifemi/movingPictures/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/thenifemi/movingPictures/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/thenifemi/movingPictures/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/thenifemi/movingPictures/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/thenifemi/movingPictures/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/thenifemi/movingPictures/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/thenifemi/movingPictures/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/thenifemi/movingPictures/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/thenifemi/movingPictures/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/thenifemi/movingPictures/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/thenifemi/movingPictures/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/thenifemi/movingPictures/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/thenifemi/movingPictures/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/thenifemi/movingPictures/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
--------------------------------------------------------------------------------
/lib/application/home/casts/casts_event.dart:
--------------------------------------------------------------------------------
1 | part of 'casts_bloc.dart';
2 |
3 | @freezed
4 | abstract class CastsEvent with _$CastsEvent {
5 | const factory CastsEvent.getCastCalled(int castId) = _GetCastCalled;
6 | }
7 |
--------------------------------------------------------------------------------
/android/app/src/main/kotlin/com/example/movingPictures/MainActivity.kt:
--------------------------------------------------------------------------------
1 | package com.nifemi.movingPictures
2 |
3 | import io.flutter.embedding.android.FlutterActivity
4 |
5 | class MainActivity: FlutterActivity() {
6 | }
7 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/lib/application/home/movies/casts/casts_event.dart:
--------------------------------------------------------------------------------
1 | part of 'casts_bloc.dart';
2 |
3 | @freezed
4 | abstract class CastsEvent with _$CastsEvent {
5 | const factory CastsEvent.getCastCalled(int movieId) = _GetCastCalled;
6 | }
7 |
--------------------------------------------------------------------------------
/lib/application/home/movies/genres/genres_event.dart:
--------------------------------------------------------------------------------
1 | part of 'genres_bloc.dart';
2 |
3 | @freezed
4 | abstract class GenresEvent with _$GenresEvent {
5 | const factory GenresEvent.getGenresCalled() = _GetGenresCalled;
6 | }
7 |
--------------------------------------------------------------------------------
/lib/application/home/series/casts/casts_event.dart:
--------------------------------------------------------------------------------
1 | part of 'casts_bloc.dart';
2 |
3 | @freezed
4 | abstract class CastsEvent with _$CastsEvent {
5 | const factory CastsEvent.getCastCalled(int serieId) = _GetCastCalled;
6 | }
7 |
--------------------------------------------------------------------------------
/lib/application/home/series/genres/genres_event.dart:
--------------------------------------------------------------------------------
1 | part of 'genres_bloc.dart';
2 |
3 | @freezed
4 | abstract class GenresEvent with _$GenresEvent {
5 | const factory GenresEvent.getGenresCalled() = _GetGenresCalled;
6 | }
7 |
--------------------------------------------------------------------------------
/lib/application/auth/sign_in/sign_in_event.dart:
--------------------------------------------------------------------------------
1 | part of 'sign_in_bloc.dart';
2 |
3 | @freezed
4 | abstract class SignInEvent with _$SignInEvent {
5 | const factory SignInEvent.signInwithGooglePressed() = SignInWithGooglePressed;
6 | }
7 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/assets/icons/regularIcons/search.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/lib/domain/home/shared_classes/cast/cast_interface.dart:
--------------------------------------------------------------------------------
1 | import 'package:dartz/dartz.dart';
2 |
3 | import 'cast.dart';
4 | import 'cast_failure.dart';
5 |
6 | abstract class CastInterface {
7 | Future> getPerson(int castId);
8 | }
9 |
--------------------------------------------------------------------------------
/lib/application/search/search_event.dart:
--------------------------------------------------------------------------------
1 | part of 'search_bloc.dart';
2 |
3 | @freezed
4 | abstract class SearchEvent with _$SearchEvent {
5 | const factory SearchEvent.trendingCalled() = _TrendingCalled;
6 | const factory SearchEvent.queryCalled(String query) = _QueryCalled;
7 | }
8 |
--------------------------------------------------------------------------------
/lib/domain/home/shared_classes/cast/cast_failure.dart:
--------------------------------------------------------------------------------
1 | import 'package:freezed_annotation/freezed_annotation.dart';
2 |
3 | part 'cast_failure.freezed.dart';
4 |
5 | @freezed
6 | abstract class CastFailure with _$CastFailure {
7 | const factory CastFailure.unexpected() = _Unexpected;
8 | }
9 |
--------------------------------------------------------------------------------
/android/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Fri Jun 23 08:50:38 CEST 2017
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip
7 |
--------------------------------------------------------------------------------
/assets/icons/regularIcons/cancel.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/lib/application/auth/auth_state.dart:
--------------------------------------------------------------------------------
1 | part of 'auth_bloc.dart';
2 |
3 | @freezed
4 | abstract class AuthState with _$AuthState {
5 | const factory AuthState.initial() = _Initial;
6 | const factory AuthState.authenticated() = _Authenticated;
7 | const factory AuthState.unAuthenticated() = _UnAuthenticated;
8 | }
9 |
--------------------------------------------------------------------------------
/lib/injection.dart:
--------------------------------------------------------------------------------
1 | import 'package:get_it/get_it.dart';
2 | import 'package:injectable/injectable.dart';
3 |
4 | import 'injection.config.dart';
5 |
6 | final GetIt getIt = GetIt.instance;
7 |
8 | @injectableInit
9 | void configureInjection(String env) {
10 | $initGetIt(getIt, environment: env);
11 | }
12 |
--------------------------------------------------------------------------------
/lib/presentation/core/app_colors.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class AppColors {
4 | static const Color black = Color(0xFF000000);
5 | static const Color red = Color(0xFFE50914);
6 | static const Color gray = Color(0xFF343434);
7 | static const Color white = Color(0xFFFFFFFF);
8 | }
9 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/android/.gitignore:
--------------------------------------------------------------------------------
1 | gradle-wrapper.jar
2 | /.gradle
3 | /captures/
4 | /gradlew
5 | /gradlew.bat
6 | /local.properties
7 | GeneratedPluginRegistrant.java
8 |
9 | # Remember to never publicly share your keystore.
10 | # See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app
11 | key.properties
12 |
--------------------------------------------------------------------------------
/assets/icons/regularIcons/heart_filled.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/lib/application/auth/auth_event.dart:
--------------------------------------------------------------------------------
1 | part of 'auth_bloc.dart';
2 |
3 | @freezed
4 | abstract class AuthEvent with _$AuthEvent {
5 | const factory AuthEvent.authCheckRequested() = _AuthCheckRequested;
6 | const factory AuthEvent.signedOut() = _SignedOut;
7 | const factory AuthEvent.storeGoogleUser() = _StoreGoogleUser;
8 | }
9 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/.metadata:
--------------------------------------------------------------------------------
1 | # This file tracks properties of this Flutter project.
2 | # Used by Flutter tool to assess capabilities and perform upgrades etc.
3 | #
4 | # This file should be version controlled and should not be manually edited.
5 |
6 | version:
7 | revision: 84f3d28555368a70270e9ac8390a9441df95e752
8 | channel: stable
9 |
10 | project_type: app
11 |
--------------------------------------------------------------------------------
/lib/domain/search/search_interface.dart:
--------------------------------------------------------------------------------
1 | import 'package:dartz/dartz.dart';
2 |
3 | import '../home/movies/movie/movies_failure.dart';
4 | import 'search.dart';
5 |
6 | abstract class SearchInterface {
7 | Future>> getTrending();
8 | Future>> getSearchQuery(String query);
9 | }
10 |
--------------------------------------------------------------------------------
/assets/icons/regularIcons/info.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/lib/domain/core/failures.dart:
--------------------------------------------------------------------------------
1 | import 'package:freezed_annotation/freezed_annotation.dart';
2 | part 'failures.freezed.dart';
3 |
4 | @freezed
5 | abstract class ValueFailure with _$ValueFailure {
6 | //Auth failures
7 | const factory ValueFailure.accountAlreadyExists({
8 | @required T failedValue,
9 | }) = AccountAlreadyExists;
10 | }
11 |
--------------------------------------------------------------------------------
/lib/domain/auth/app_user_failure.dart:
--------------------------------------------------------------------------------
1 | import 'package:freezed_annotation/freezed_annotation.dart';
2 | part 'app_user_failure.freezed.dart';
3 |
4 | @freezed
5 | abstract class AppUserFailure with _$AppUserFailure {
6 | const factory AppUserFailure.unexpected() = _Unexpected;
7 | const factory AppUserFailure.insufficientPermissions() =
8 | _InsufficientPermissions;
9 | }
10 |
--------------------------------------------------------------------------------
/lib/domain/home/shared_classes/genres/genre_failure.dart:
--------------------------------------------------------------------------------
1 | import 'package:freezed_annotation/freezed_annotation.dart';
2 |
3 | part 'genre_failure.freezed.dart';
4 |
5 | @freezed
6 | abstract class GenreFailure with _$GenreFailure {
7 | const factory GenreFailure.unexpected() = _Unexpected;
8 | const factory GenreFailure.noInternetConnection() = _NoInternetConnection;
9 | }
10 |
--------------------------------------------------------------------------------
/android/app/src/debug/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/android/app/src/profile/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/assets/icons/regularIcons/heart.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md:
--------------------------------------------------------------------------------
1 | # Launch Screen Assets
2 |
3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory.
4 |
5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images.
--------------------------------------------------------------------------------
/lib/application/auth/user_profile/user_profile_event.dart:
--------------------------------------------------------------------------------
1 | part of 'user_profile_bloc.dart';
2 |
3 | @freezed
4 | abstract class UserProfileEvent with _$UserProfileEvent {
5 | const factory UserProfileEvent.watchProfileStarted() = _WatchProfileStarted;
6 | const factory UserProfileEvent.profileRecieved(
7 | Either failureOrProfile,
8 | ) = _ProfileRecieved;
9 | }
10 |
--------------------------------------------------------------------------------
/lib/domain/auth/auth_failure.dart:
--------------------------------------------------------------------------------
1 | import 'package:freezed_annotation/freezed_annotation.dart';
2 |
3 | part 'auth_failure.freezed.dart';
4 |
5 | @freezed
6 | abstract class AuthFailure with _$AuthFailure {
7 | const factory AuthFailure.cancelledByUser() = CancelledByUser;
8 | const factory AuthFailure.serverError() = ServerError;
9 | const factory AuthFailure.unexpected() = Unexpected;
10 | }
11 |
--------------------------------------------------------------------------------
/lib/infrastructure/auth/firebase_user_mapper.dart:
--------------------------------------------------------------------------------
1 | import 'package:firebase_auth/firebase_auth.dart' as firebase;
2 |
3 | import '../../domain/auth/app_user.dart';
4 |
5 | extension FirebaseUserDomainX on firebase.User {
6 | AppUser toDomain() {
7 | return AppUser(
8 | id: uid,
9 | name: displayName,
10 | photoURL: photoURL,
11 | email: email,
12 | );
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/assets/icons/regularIcons/home.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/lib/application/home/casts/casts_state.dart:
--------------------------------------------------------------------------------
1 | part of 'casts_bloc.dart';
2 |
3 | @freezed
4 | abstract class CastsState with _$CastsState {
5 | const factory CastsState.initial() = _Initial;
6 | const factory CastsState.loading() = _Loading;
7 | const factory CastsState.loadSuccess(Cast cast) = _LoadSuccess;
8 |
9 | const factory CastsState.loadFailure(CastFailure castFailure) = _LoadFailure;
10 | }
11 |
--------------------------------------------------------------------------------
/assets/icons/regularIcons/play.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/lib/application/home/movies/casts/casts_state.dart:
--------------------------------------------------------------------------------
1 | part of 'casts_bloc.dart';
2 |
3 | @freezed
4 | abstract class CastsState with _$CastsState {
5 | const factory CastsState.initial() = _Initial;
6 | const factory CastsState.loading() = _Loading;
7 | const factory CastsState.loadSuccess(List casts) = _LoadSuccess;
8 | const factory CastsState.loadFailure(CastFailure castFailure) = _LoadFailure;
9 | }
10 |
--------------------------------------------------------------------------------
/lib/application/home/series/casts/casts_state.dart:
--------------------------------------------------------------------------------
1 | part of 'casts_bloc.dart';
2 |
3 | @freezed
4 | abstract class CastsState with _$CastsState {
5 | const factory CastsState.initial() = _Initial;
6 | const factory CastsState.loading() = _Loading;
7 | const factory CastsState.loadSuccess(List casts) = _LoadSuccess;
8 | const factory CastsState.loadFailure(CastFailure castFailure) = _LoadFailure;
9 | }
10 |
--------------------------------------------------------------------------------
/lib/application/home/movies/genres/genres_state.dart:
--------------------------------------------------------------------------------
1 | part of 'genres_bloc.dart';
2 |
3 | @freezed
4 | abstract class GenresState with _$GenresState {
5 | const factory GenresState.initial() = _Initial;
6 | const factory GenresState.loading() = _Loading;
7 | const factory GenresState.loadSuccess(List genres) = _LoadSuccess;
8 | const factory GenresState.loadFailure(GenreFailure genreFailure) =
9 | _LoadFailure;
10 | }
11 |
--------------------------------------------------------------------------------
/lib/application/home/series/genres/genres_state.dart:
--------------------------------------------------------------------------------
1 | part of 'genres_bloc.dart';
2 |
3 | @freezed
4 | abstract class GenresState with _$GenresState {
5 | const factory GenresState.initial() = _Initial;
6 | const factory GenresState.loading() = _Loading;
7 | const factory GenresState.loadSuccess(List genres) = _LoadSuccess;
8 | const factory GenresState.loadFailure(GenreFailure genreFailure) =
9 | _LoadFailure;
10 | }
11 |
--------------------------------------------------------------------------------
/android/.settings/org.eclipse.buildship.core.prefs:
--------------------------------------------------------------------------------
1 | arguments=
2 | auto.sync=false
3 | build.scans.enabled=false
4 | connection.gradle.distribution=GRADLE_DISTRIBUTION(WRAPPER)
5 | connection.project.dir=
6 | eclipse.preferences.version=1
7 | gradle.user.home=
8 | java.home=C\:/Program Files/Java/jdk-14.0.2
9 | jvm.arguments=
10 | offline.mode=false
11 | override.workspace.settings=true
12 | show.console.view=true
13 | show.executions.view=true
14 |
--------------------------------------------------------------------------------
/lib/main.dart:
--------------------------------------------------------------------------------
1 | import 'package:firebase_core/firebase_core.dart';
2 | import 'package:flutter/material.dart';
3 | import 'package:injectable/injectable.dart';
4 |
5 | import 'injection.dart';
6 | import 'presentation/core/app_widget.dart';
7 |
8 | Future main() async {
9 | WidgetsFlutterBinding.ensureInitialized();
10 |
11 | await Firebase.initializeApp();
12 |
13 | configureInjection(Environment.prod);
14 |
15 | runApp(App());
16 | }
17 |
--------------------------------------------------------------------------------
/lib/domain/home/series/favorite_series_interface.dart:
--------------------------------------------------------------------------------
1 | import 'package:dartz/dartz.dart';
2 |
3 | import 'favorite_serie/favorite_serie.dart';
4 | import 'serie/serie_failure.dart';
5 |
6 | abstract class FavoriteSeriesInterface {
7 | Stream>> watchSerieFavorites();
8 | Future> createFavoriteSerie(int serieId);
9 | Future> deleteFavoriteSerie(int serieId);
10 | }
11 |
--------------------------------------------------------------------------------
/lib/domain/home/movies/favorite_movies_interface.dart:
--------------------------------------------------------------------------------
1 | import 'package:dartz/dartz.dart';
2 |
3 | import 'favorite_movies/favorite_movies.dart';
4 | import 'movie/movies_failure.dart';
5 |
6 | abstract class FavoriteMoviesInterface {
7 | Stream>> watchMovieFavorites();
8 | Future> createFavoriteMovie(int movieId);
9 | Future> deleteFavoriteMovie(int movieId);
10 | }
11 |
--------------------------------------------------------------------------------
/lib/domain/search/search.dart:
--------------------------------------------------------------------------------
1 | class Search {
2 | final int id;
3 | final String mediaType;
4 |
5 | Search({this.id, this.mediaType});
6 |
7 | factory Search.fromJson(Map json) => Search(
8 | id: json['id'] as int ?? -0,
9 | mediaType: json['media_type'] as String,
10 | );
11 |
12 | factory Search.toDomain(Search search) => Search(
13 | id: search.id,
14 | mediaType: search.mediaType,
15 | );
16 | }
17 |
--------------------------------------------------------------------------------
/assets/icons/regularIcons/friends.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ios/Runner/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | import UIKit
2 | import Flutter
3 |
4 | @UIApplicationMain
5 | @objc class AppDelegate: FlutterAppDelegate {
6 | override func application(
7 | _ application: UIApplication,
8 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
9 | ) -> Bool {
10 | GeneratedPluginRegistrant.register(with: self)
11 | return super.application(application, didFinishLaunchingWithOptions: launchOptions)
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/lib/application/auth/user_profile/user_profile_state.dart:
--------------------------------------------------------------------------------
1 | part of 'user_profile_bloc.dart';
2 |
3 | @freezed
4 | abstract class UserProfileState with _$UserProfileState {
5 | const factory UserProfileState.initial() = _Initial;
6 | const factory UserProfileState.loadingProgress() = _LoadingProgress;
7 | const factory UserProfileState.loadSuccess(AppUser appUser) = _LoadSuccess;
8 | const factory UserProfileState.loadFailure(AppUserFailure appUserFailure) =
9 | _LoadFailure;
10 | }
11 |
--------------------------------------------------------------------------------
/lib/domain/core/errors.dart:
--------------------------------------------------------------------------------
1 | import 'failures.dart';
2 |
3 | class NotAuthenticatedError extends Error {}
4 |
5 | class UnexpectedValueError extends Error {
6 | final ValueFailure valueFailure;
7 |
8 | UnexpectedValueError(this.valueFailure);
9 |
10 | @override
11 | String toString() {
12 | const explanation =
13 | 'Encountered a ValueFailure at an unrecoverable point. Terminating!';
14 | return Error.safeToString('$explanation Failure was: $valueFailure');
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/lib/presentation/core/component_widgets/flushbar_method.dart:
--------------------------------------------------------------------------------
1 | import 'package:flushbar/flushbar.dart';
2 | import 'package:flutter/material.dart';
3 |
4 | Future showFlushbar({
5 | @required BuildContext context,
6 | @required String message,
7 | }) {
8 | return Flushbar(
9 | message: message,
10 | flushbarStyle: FlushbarStyle.FLOATING,
11 | duration: const Duration(seconds: 3),
12 | margin: const EdgeInsets.all(15),
13 | borderRadius: 8,
14 | ).show(context);
15 | }
16 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | -
8 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/android/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 |
3 | def localPropertiesFile = new File(rootProject.projectDir, "local.properties")
4 | def properties = new Properties()
5 |
6 | assert localPropertiesFile.exists()
7 | localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) }
8 |
9 | def flutterSdkPath = properties.getProperty("flutter.sdk")
10 | assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
11 | apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle"
12 |
--------------------------------------------------------------------------------
/lib/domain/people/people_failure.dart:
--------------------------------------------------------------------------------
1 | import 'package:freezed_annotation/freezed_annotation.dart';
2 |
3 | part 'people_failure.freezed.dart';
4 |
5 | @freezed
6 | abstract class PeopleFailure with _$PeopleFailure {
7 | const factory PeopleFailure.unexpected() = _Unexpected;
8 | const factory PeopleFailure.noInternetConnection() = _NoInternetConnection;
9 | const factory PeopleFailure.unableToAdd() = _UnableToAdd;
10 | const factory PeopleFailure.insufficientPermissions() =
11 | _InsufficientPermissions;
12 | }
13 |
--------------------------------------------------------------------------------
/lib/domain/home/movies/movie/movies_failure.dart:
--------------------------------------------------------------------------------
1 | import 'package:freezed_annotation/freezed_annotation.dart';
2 |
3 | part 'movies_failure.freezed.dart';
4 |
5 | @freezed
6 | abstract class MovieFailure with _$MovieFailure {
7 | const factory MovieFailure.unexpected() = _Unexpected;
8 | const factory MovieFailure.noInternetConnection() = _NoInternetConnection;
9 | const factory MovieFailure.unableToAdd() = _UnableToAdd;
10 | const factory MovieFailure.insufficientPermissions() =
11 | _InsufficientPermissions;
12 | }
13 |
--------------------------------------------------------------------------------
/lib/domain/home/series/serie/serie_failure.dart:
--------------------------------------------------------------------------------
1 | import 'package:freezed_annotation/freezed_annotation.dart';
2 |
3 | part 'serie_failure.freezed.dart';
4 |
5 | @freezed
6 | abstract class SerieFailure with _$SerieFailure {
7 | const factory SerieFailure.unexpected() = _Unexpected;
8 | const factory SerieFailure.noInternetConnection() = _NoInternetConnection;
9 | const factory SerieFailure.unableToAdd() = _UnableToAdd;
10 | const factory SerieFailure.insufficientPermissions() =
11 | _InsufficientPermissions;
12 | }
13 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "LaunchImage.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "LaunchImage@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "LaunchImage@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/lib/application/home/movies/movies/movies_state.dart:
--------------------------------------------------------------------------------
1 | part of 'movies_bloc.dart';
2 |
3 | @freezed
4 | abstract class MoviesState with _$MoviesState {
5 | const factory MoviesState.initial() = _Initial;
6 | const factory MoviesState.loading() = _Loading;
7 | const factory MoviesState.loadSuccess(List movies) = _LoadSuccess;
8 | const factory MoviesState.loadSuccessforMovie(Movie movie) =
9 | _LoadSuccessforBannerMovie;
10 | const factory MoviesState.loadFailure(MovieFailure movieFailure) =
11 | _LoadFailure;
12 | }
13 |
--------------------------------------------------------------------------------
/lib/application/home/series/series/series_state.dart:
--------------------------------------------------------------------------------
1 | part of 'series_bloc.dart';
2 |
3 | @freezed
4 | abstract class SeriesState with _$SeriesState {
5 | const factory SeriesState.initial() = _Initial;
6 | const factory SeriesState.loading() = _Loading;
7 | const factory SeriesState.loadSuccess(List series) = _LoadSuccess;
8 | const factory SeriesState.loadSuccessforSerie(Serie serie) =
9 | _LoadSuccessforBannerMovie;
10 | const factory SeriesState.loadFailure(SerieFailure serieFailure) =
11 | _LoadFailure;
12 | }
13 |
--------------------------------------------------------------------------------
/lib/domain/auth/auth_repository_interface.dart:
--------------------------------------------------------------------------------
1 | import 'package:dartz/dartz.dart';
2 |
3 | import 'app_user.dart';
4 | import 'app_user_failure.dart';
5 | import 'auth_failure.dart';
6 |
7 | abstract class AuthInterface {
8 | // [Unit] can be read as void.
9 | Future> signInWithGoogle();
10 |
11 | Future