Star Wars - Clean Architecture
I'm developing this App aiming to learn about Clean Architecture and Dart/Flutter
It's a very simple app which the user can only access and see some information. As I was learning about clean architecture, I focused more on the code structure than the app's features/functionality.
My code references were:
-
ResoCoder (Main reference):
-
Flutterando:
Layout:
To develop the layout I based on some layouts I found browsing the internet:
- Dashboard - List Design
- Characters (I didn't remember of any specific reference)
- Films - Slider Layout
- Planets - Page Layout - this one I just change some features, the code is quite the same
- Species, Starships, Vehicles - Expandable
- I downloaded each image i'm using in this project. it was sooo boring...
I'm not proud of this layout, mainly because it was not the goal of this project. However, I am open to suggestions. If someone wants to suggest a better layout, I may update the project.
Data:
I'm consuming the APIs from SWAPI.
Project Development:
- Flutter version: 2.2.0
- Dart version: >=2.12.0 <3.0.0 (Null Safety)
- Functional Programing - dartz version: 0.10.0-nullsafety.2
- Remote API:
- Check Internet Connection - internet_connection_checker version: 0.0.1+1
- Library for making HTTP requests - http version: 0.13.3
- Local Persistence:
- State Management - flutter_bloC version: 7.0.0
- Value Equality - equatable version: 2.0.2
- Service Locator - get_it version: 7.1.3
- Shared Preferences - shared_preferences version: 2.0.6
- Carousel Slider (Layout)- carousel_slider version: 4.0.0-nullsafety.0
- Widget that expand and collapse (Layout) - expandable version: 5.0.1
Screenshots
To Do:
Some Improvements I'm planning to do
- Create Tests for Films, Planets, Starships, Species, Vehicles and Core components*
- Finish Planets screen
- Switch Theme structure (Shared Preferences)
- Switch between Light/Dark Theme - (Probably I will include it on
Drawer,AppBaror Both.) - Identify any SharePreferences change using
Get_itProvider**. - Develop the local data structure (local database)
- Download the online data only once (after that use local data -local database-)
- Identify any DataBase change using Get_it
- Layout Improvements on Lists (Like list of movies on Character Detail Page. Replace id by tile)
- Optimize the similar code between different features
- Check if the Clean Architecture concepts are still being properly used
- (Optional) Include images (no background preferably) for Vehicles, Species and Planets
- (Optional) Layout Update (design a more professional layout)
(*)I know it's wrong to write tests later, but I was learning about Clean Arch not TDD. However, when finish developing the People feature, I did the others by using CTRL+C/CTRL+V (... And I was too lazy to do the tests).
(**) For a professional project, I would choose Get_It OR Provider . However, here I am using both to be able to show the utilization of as many resources as possible.
Any suggestion, please let me know!