Skip to content

Flutter Movie πŸ“± app built with Riverpod, GoRouter, Dio, and Freezed based on Clean Architecture. It offers a clean, scalable, and maintainable codebase for Flutter development

Notifications You must be signed in to change notification settings

piashcse/flutter-movie-clean-architecture

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

36 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Flutter Movie

Flutter Dart Riverpod badge-Android badge-iOS GitHub license GitHub

Flutter Movie is built with Riverpod, Clean Architecture, and GoRouter that showcases movies fetched from TMDB API. It includes now playing, popular, top-rated, and upcoming movies with support for pagination, search, and detailed view.

Β Β Β Β Β Β Β Β Β Β Β Β 


Β Β Β Β Β Β Β Β Β Β Β Β 

✨ Features

  • 🎞 Now Playing, Popular, Top Rated & Upcoming movie sections
  • πŸ” Movie Detail Page
  • 🎯 Recommended Movies
  • πŸ” Search Movies
  • πŸ‘₯ Artist List
  • 🧾 Artist Detail Page
  • πŸ“ƒ Pagination (infinite scroll)
  • πŸ”„ Bottom Navigation
  • 🧭 Declarative Routing with GoRouter
  • 🧱 Clean Architecture (Presentation / Domain / Data)
  • πŸ§ͺ Riverpod State Management
  • 🌐 Network layer using Dio with Logging
  • πŸš€ Smooth UX with loading indicators

Architecture


Fig. Clean Architecture

Project Directory

flutter_movie_clean_architecture/
β”œβ”€β”€ lib/
β”‚   β”œβ”€β”€ core/
β”‚   β”‚   β”œβ”€β”€ config/
β”‚   β”‚   β”‚   └── app_constant.dart
β”‚   β”‚   β”œβ”€β”€ network/
β”‚   β”‚   β”‚   └── dio_provider.dart
β”‚   β”‚   └── utils/
β”‚   β”‚       └── utils.dart
β”‚   β”œβ”€β”€ features/
β”‚   β”‚   └── movie/
β”‚   β”‚       β”œβ”€β”€ data/
β”‚   β”‚       β”‚   β”œβ”€β”€ datasources/
β”‚   β”‚       β”‚   β”‚   └── movie_remote_data_source.dart
β”‚   β”‚       β”‚   β”œβ”€β”€ models/
β”‚   β”‚       β”‚   β”‚   β”œβ”€β”€ movie_detail_model.dart
β”‚   β”‚       β”‚   β”‚   β”œβ”€β”€ movie_model.dart
β”‚   β”‚       β”‚   β”‚   └── credit_model.dart
β”‚   β”‚       β”‚   └── repositories/
β”‚   β”‚       β”‚       └── movie_repository_impl.dart
β”‚   β”‚       β”œβ”€β”€ domain/
β”‚   β”‚       β”‚   β”œβ”€β”€ entities/
β”‚   β”‚       β”‚   β”‚   β”œβ”€β”€ movie.dart
β”‚   β”‚       β”‚   β”‚   β”œβ”€β”€ movie_detail.dart
β”‚   β”‚       β”‚   β”‚   β”œβ”€β”€ credit.dart
β”‚   β”‚       β”‚   β”‚   └── artist_detail.dart
β”‚   β”‚       β”‚   β”œβ”€β”€ repositories/
β”‚   β”‚       β”‚   β”‚   └── movie_repository.dart
β”‚   β”‚       β”‚   └── usecases/
β”‚   β”‚       β”‚       β”œβ”€β”€ get_all_artist_movies.dart
β”‚   β”‚       β”‚       β”œβ”€β”€ get_movie_detail.dart
β”‚   β”‚       β”‚       β”œβ”€β”€ get_movie_credits.dart
β”‚   β”‚       β”‚       β”œβ”€β”€ get_movie_search.dart
β”‚   β”‚       β”‚       β”œβ”€β”€ get_now_playing.dart
β”‚   β”‚       β”‚       β”œβ”€β”€ get_popular.dart
β”‚   β”‚       β”‚       β”œβ”€β”€ get_top_rated.dart
β”‚   β”‚       β”‚       β”œβ”€β”€ get_up_coming.dart
β”‚   β”‚       β”‚       β”œβ”€β”€ get_recommended_movie.dart
β”‚   β”‚       β”‚       └── get_artist_detail.dart
β”‚   β”‚       └── presentation/
β”‚   β”‚           β”œβ”€β”€ pages/
β”‚   β”‚           β”‚   β”œβ”€β”€ artist_detail_page.dart
β”‚   β”‚           β”‚   β”œβ”€β”€ artist_list_page.dart
β”‚   β”‚           β”‚   β”œβ”€β”€ movie_detail_page.dart
β”‚   β”‚           β”‚   β”œβ”€β”€ movie_main_page.dart
β”‚   β”‚           β”‚   β”œβ”€β”€ now_playing_page.dart
β”‚   β”‚           β”‚   β”œβ”€β”€ popular_page.dart
β”‚   β”‚           β”‚   β”œβ”€β”€ top_rated_page.dart
β”‚   β”‚           β”‚   └── up_coming_page.dart
β”‚   β”‚           β”œβ”€β”€ providers/
β”‚   β”‚           β”‚   β”œβ”€β”€ movie_provider.dart
β”‚   β”‚           └── widgets/
β”‚   β”‚               β”œβ”€β”€ movie_card.dart
β”‚   β”‚               └── movie_search.dart
β”‚   β”œβ”€β”€ routing/
β”‚   β”‚   └── app_router.dart
β”‚   └── main.dart
β”œβ”€β”€ ios/
β”œβ”€β”€ screen_shots/
β”œβ”€β”€ test/
β”œβ”€β”€ .flutter-plugins
β”œβ”€β”€ .flutter-plugins-dependencies
β”œβ”€β”€ .gitignore
β”œβ”€β”€ .metadata
β”œβ”€β”€ analysis_options.yaml
└── flutter_movie_clean_architecture.iml

Clone the repository

git clone [email protected]:piashcse/flutter-movie-clean-architecture.git

Install dependencies

flutter pub get

Generate code (build runner)

flutter pub run build_runner build --delete-conflicting-outputs

Run the app

flutter run

Built With πŸ› 

  • Flutter - Google’s UI toolkit for building natively compiled applications for mobile, web, and desktop from a single codebase.
  • Riverpod - A simple, composable, and testable state management solution for Flutter.
  • GoRouter - Declarative routing package for Flutter, designed to work seamlessly with state management and deep linking.
  • Dio - A powerful HTTP client for Dart, supporting interceptors, global configuration, FormData, request cancellation, and more.
  • Freezed - A code generator for immutable classes that helps with union types/pattern matching in Dart.
  • JsonSerializable - Generates code for converting between Dart objects and JSON, making serialization easy.
  • Logger / DioLogger - Easy and pretty logging package for debugging; use DioLogger to log Dio HTTP requests and responses.

πŸ‘¨ Developed By

Mehedi Hassan Piash

Twitter Medium Linkedin Web Blog

License

Copyright 2025 piashcse (Mehedi Hassan Piash)

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

About

Flutter Movie πŸ“± app built with Riverpod, GoRouter, Dio, and Freezed based on Clean Architecture. It offers a clean, scalable, and maintainable codebase for Flutter development

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages