desktop_linux.mp4
movies_riverpod is a versatile Flutter app designed for seamless movie exploration across different platforms. The app follows a Clean Architecture pattern, ensuring a modular and maintainable codebase. It has been successfully tested on mobile platforms (Android, iOS) and desktop (Linux).
📁 core: Houses fundamental components and shared files essential for the application, such as the main app configuration (app.dart
), error handling (observers.dart
), extensions, constants, and other core functionalities.
📁 di (Dependency Injection): Manages the dependency injection logic for improved code organization and testability. The injector.dart
file resides here.
📁 features: Organized into three subdirectories: data
for data-related logic and repositories, domain
for the use cases, and presentation
for UI screens and widgets. This follows a clean architecture approach, promoting separation of concerns.
📁 models: Contains the data models used throughout the application, such as movies.dart
and casts.dart
.
📄 main.dart: The entry point of the application, where the execution begins. It imports and initializes necessary components to kickstart the Flutter app.
-
Clean Architecture: The project adheres to Clean Architecture principles, promoting separation of concerns and maintainability.
-
Multiplatform Compatibility: Enjoy a consistent experience on mobile (both portrait and landscape) and desktop (Linux).
-
State Management with Riverpod: Leverage Riverpod for efficient and scalable state management.
-
Dependency Injection: Implement dependency injection for better code organization and testability.
-
Multiple Themes: Choose from a variety of themes to customize the app's appearance according to your preferences.
-
Responsive Design: Experience responsive design that adapts to different screen orientations on mobile and desktop.
-
Bookmarks: Save your favorite movies for quick access and reference.
-
Upcoming Movies Screen: Stay informed about the latest upcoming releases.
-
Trending Movies Screen: Explore the current trending movies in the app.
-
Home Screen: Navigate seamlessly through the app's main screen for a user-friendly experience.
-
Movie Details Screen: Get detailed information about each movie, enhancing your viewing experience.
-
Now Showing Movies: Stay updated on movies currently being screened.
-
Track Your Activity: Utilize the "Notifications" feature to keep a record of your interactions within the app.
The project utilizes a range of dependencies to enhance functionality and streamline development. Some key dependencies include:
- flutter_riverpod: State management library for Flutter.
- dio: HTTP client for making network requests.
- flutter_svg: SVG rendering library for Flutter.
- freezed: Code generation for immutable classes.
- flutter_screenutil: Screen adaptation utility for responsive design.
- go_router: Routing library for Flutter.
- shimmer: Loading animation library for a polished UI.
- cached_network_image: Caching library for network images.
- shared_preferences: Local storage for persisting simple data.
- isar: High-performance, easy-to-use NoSQL database for Flutter.
- get_it: Simple service locator for dependency injection.
Key development dependencies include:
- build_runner: Code generation tool for Flutter.
- json_serializable: JSON serialization/deserialization for Dart objects.
- isar_generator: Code generation for Isar database.
- auto_route_generator: Code generation for routing with auto_route.
To get started with the project, follow these steps:
- Clone the repository.
- Install dependencies using flutter pub get.
- Run the app on your preferred platform using flutter run.