Skip to content

Latest commit

 

History

History
125 lines (81 loc) · 7.48 KB

README.md

File metadata and controls

125 lines (81 loc) · 7.48 KB
desktop_linux.mp4

movies_riverpod

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).

Directory Structure.

📁 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.

Features

  • 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.

Dependencies

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.

Development Dependencies

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.

Download Apk


Screen Shots

Mobile.

Portrait.

Landscape.

Desktop "Linux".

Getting Started

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.