Introduction: Project Overview
This project is a Flutter-based mobile application designed to provide users with a comprehensive and interactive platform for exploring movies. The application leverages the BLoC (Business Logic Component) architecture to manage state effectively and ensure a smooth user experience.
- Movie Exploration: Users can browse through trending movies, upcoming releases, and different genres.
- Movie Details: Detailed information about each movie, including genres, release dates, and reviews.
- User Favorites: Users can save movies to their favorites for quick access later.
- Nearby Movie Theatre: User can easily search and find their perfect place to watch movies.
- Day/Night Mood: User can easily switch their life dark to light haha.
- Responsive UI: A visually appealing interface that adapts to different screen sizes, providing a seamless experience across devices.
lib/
├── bloc/
│ └── bloc.dart
├── config/
│ ├── colors/
│ ├── components/
│ ├── routes/
│ └── app_url.dart
│---models/
│ │ └── models.dart
│───repository/
│ │ └── repository.dart
│───services/
│ │ ├── favourite_services/
│ │ ├── session_manager/
│ │ ├── splash/
│ │ └── storage/
│───data/
│ ├── exceptions/
│ ├── hive/
│ ├── network/
├── theme/
│ ├── constant.dart
│ ├── data.dart
│ ├── enums.dart
│ ├── flash_bar_helper.dart
│ ├── validations.dart
├── utils/
│ ├── validations.dart
│ ├── constant.dart
├── views/
│ ├── widgets/
│ │ ├── views.dart
│ │ ├── widgets.dart
│ └── views.dart
└── main.dart
Here's a brief overview of the project's directory structure:
-
lib/: The main directory for the Flutter app source code.
-
data/: Contains everything related to data handling, including models, repositories, and services.
- models/: Defines data structures used in the app, such as
MovieModel
andGenreModel
. - repositories/: Classes responsible for handling data fetching and storage logic, e.g.,
MovieRepository
andGenreRepository
. - services/: Provides services for API calls and local storage.
ApiService
: Handles communication with the TMDB API.LocalStorageService
: Manages data persistence using SQLite, Hive, etc.
- models/: Defines data structures used in the app, such as
-
ui/: Contains all UI-related components, including screens and widgets.
- screens/: Houses the different screens of the app, such as
HomeScreen
,MovieDetailsScreen
,FavoritesScreen
, andSettingsScreen
. - widgets/: Includes reusable UI components, such as
MovieCard
andGenreSelector
.
- screens/: Houses the different screens of the app, such as
-
state/: Dedicated to state management using the
BLoC (Business Logic Component)
pattern.movie_bloc.dart
,genre_bloc.dart
, andfavorites_bloc.dart
: Manage the state for movies, genres, and favorites, respectively.
-
utils/: Contains utility classes and constants.
constants.dart
: Defines app-wide constants, such as API keys and URLs.
-
-
main.dart: The entry point of the application, where the app is initialized and the home screen is loaded.
theme.dart manages the app's theming, including light and dark modes. main.dart: The entry point of the application, where the app is initialized and the home screen is loaded.
To set up and run the project locally, follow the steps below:
Ensure that you have the following software installed on your machine:
- Flutter SDK: Download and install Flutter from the official Flutter website. Ensure that your PATH environment variable is set correctly.
- Dart SDK: Comes bundled with Flutter.
- Android Studio: For Android development, including the Android SDK. You can download it from the Android Studio website.
- Xcode: For iOS development (macOS only). Download from the Mac App Store.
- VS Code or Android Studio: Preferred code editors. Install VS Code from the official website or Android Studio from the Android Studio website.
Clone the repository to your local machine:
git clone https://github.com/majharul-islam181/Orange_Theatre
Move into the project directory:
cd orange_theatre
Install the necessary Flutter dependencies by running the following command:
flutter pub get
To run the project on the selected device or emulator, use the following command::
flutter run
https://drive.google.com/drive/folders/1820F21o270d1K_lLNnJypJ7Yr0ctPA0q?usp=sharing