This Flutter application serves as a film encyclopedia, fetching data from The Movie Database (TMDB) API. Below are the key features and architectural details of the application and screenshots:
The application architecture is divided into three layers: data, domain, and presentation.
-
Data Layer: Responsible for interacting with external data sources, such as APIs or databases and making http requests. Clients in this layer handle data retrieval and storage.
-
Domain Layer: Repositories in this layer follow patterns that define their behavior, allowing for flexible and clean logic inside the BLoC handlers.
-
Presentation Layer: Handles the user interface and user interaction. It includes widgets, screens, and BLoC components.
BLoC (Business Logic Component) is used for state management in the application. BLoC architecture separates business logic from UI components, making the application more modular and easier to maintain.
The go_router package is used for navigation within the application. It provides a flexible and declarative way to define routes and handle navigation events.
The application has its own hierarchy of errors and error handlers. Error handling is implemented throughout the application, including network-related errors and other types of exceptions.
Logging functionality is integrated into the application to provide insights into the application's behavior and aid in debugging. Navigation logging is also implemented to track navigation events.
Two types of data storage are utilized in the application:
shared_preferences
: for storing regular data;flutter_secure_storage
: for storing authentication and session-related data securely.