A movie application that utilizes The TMDB API, following Domain Driven Design (DDD) architectural principles.
-
Login: Utilizes Shared Prefernces to effectively manage and store login details, including the login status.
- Note: The app uses dummy password checking, allowing users to log in if the values entered for username and password are exactly the same (e.g., username: abc, password: abc).
-
Multiple Profiles: Enables multiple profiles within an account, allowing users to add and choose profiles after logging in.
-
Search: Incorporates Infinite Scroll Pagination for searching movies, enhancing the user experience.
-
Movie Details: Creates a movie details screen and enables the addition of movies to a personalized 'My List', with separate lists stored in a local database for each user profile.
-
Share Plus: Implements the feature to share movies (text) with a direct link that opens in the app.
-
Deep Linking: The app can be directly launched to a screen through a clickable link, utilizing
movieapp.com
as the link. Uses Go Router for routing.- Note: The domain is used for study purposes and doesn't imply ownership.
-
State Management: Utilizes Bloc for effective state management.
-
Local Database: Uses SQFlite for local database.
-
Cached Network Image: Incorporates Cached Network Image for efficient image loading.
- Clone the repository
- Get a TMDB API token (easy step; there are a lot of tutorials helping with it).
- Create a file named
_api_key.dart
in the pathlib/infrastructure/core/dio/
and add the following content:
part of 'dio_provider.dart';
const _apiKey = 'YOUR_TOKEN_HERE';
Replace YOUR_TOKEN_HERE with your actual API token.
- Run in command line
cd movie_app
flutter pub get
flutter run
Note : The application was run on Android while in development and was not tested on iOS.