This is a Flutter sample application on how to use the TVMaze API.
After cloning the project, run:
cd <path_to_this_project>
flutter pub get
flutter run
The application requires that you create an account. Then you are able to:
- List all of the series contained in the API
- Search series by name
- After clicking on a series, you can see a detail screen that shows the episodes listed by season
- You can add/remove a serie as favorite tapping over the heart icon in the serie detail screen
- You can search persons and see the series they have participated in
- You can log out of the app
In this project, the DDD architecture was implemented and the BLoC pattern was used for state management.
Package | What it solves |
---|---|
sqflite | This is a plugin to use SQLite in Flutter. I implement this to store the selected cities and their weather conditions. |
flutter_bloc | A collection of Widgets that make it easy to integrate blocs and cubits into Flutter |
freezed | A code generator for unions/pattern-matching/copy. It helps to reduce boilerplate |
get_it | A simple service locator. It helps to reduce boilerplate and it is used also to manage the DI |
injectable | A code generator that can be used in conjunction with get_it |
path | A path manipulation library for Dart. |
dio | This package contains a set of high-level functions and classes that make it easy to consume HTTP resources. |
url_launcher | A Flutter plugin for launching a URL. Supports iOS, Android, web, Windows, macOS, and Linux. |
shared_preferences | Wraps platform-specific persistent storage for simple data (NSUserDefaults on iOS and macOS, SharedPreferences on Android, etc.). |
This was a weekend project so there are some features that I was unable to add and it has some technical debts. I name some of them below
... | Name | Detail |
---|---|---|
❌ | Testing | No tests were done. It is advisable to do it! |
❌ | Theme | I did not add a ThemeData to the application |