Application that shows pokemon list from PokeApi built with Flutter that demonstrates clean architecture using BLoC pattern and motion layout |
- Minimum SDK level 16
- Architecture
- Retrofit: Retrofit is an dio client generator to generate api services module.
- Dio: A powerful HTTP package for Dart/Flutter
- Custom Views
- Animations: Fancy pre-built animations that can easily be integrated into any Flutter application.
- Animation Progress Bar: Show an animation progress bar in reactive style.
- Floor: The typesafe, reactive, and lightweight runtime dependency SQLite abstraction for Flutter applications.
- Infinite Scroll Pagination: Lazily load and display pages of items as the user scrolls down your screen
- Go Router: A declarative router for Flutter based on Navigation 2
- Lottie: Render After Effects animations natively on Flutter.
- Freezed: Code generation for immutable classes that has a simple syntax/API without compromising on the features.
- ScreenUtil: A flutter plugin for adapting screen and font size.
- Dartz: Functional Programming in Dart using efficient immutable data structures, monads, lenses and other FP tools.
Pokedex F is based on the BLoC architecture that implements the Repository pattern, which follows the Official BLoC architecture documentation
The overall architecture of this app is composed of Presentation/App layer, Domain layer, and Data layer. Each layer has its dedicated components and responsibilities.
Presentation / App layer consists of UI elements such as widgets to configure screens that can interact with the users and state management BLoC as app logic and states holder.
Domain layer consists of core elements that are related to the business processes of the app. These elements include business data (entities) and business logic (use cases), as well as the abstraction of repository objects that communicate with other layers to obtain data from data sources and provide it to the users.
Data layer consists of the repository implementation and the data sources, which include local (database) and remote (API) data sources. This layer communicates with the domain layer to send response data to the presentation layer using the Dependency Inversion Principle.
Pokedex using the PokeAPI for constructing RESTful API.
PokeAPI provides a RESTful API interface to highly detailed objects built from thousands of lines of data related to Pokémon.
-
Check if the flutter SDK and the version is v3.7.3 or higher. Instruction to change flutter channel.
-
Clone the repo
git clone https://github.com/FarhanFDjabari/PokedexF.git
-
Get the pubspec packages
flutter pub get
-
Some files like
*.freezed.dart
,*.g.dart
are auto generated. If there is any issue from these files just run this command to regenerate them.flutter pub run build_runner build --delete-conflicting-outputs
-
Run the app
flutter run
- I want to mention Jaewoong Eum (skydoves) for inspiring me to work on this repository. His project has been a huge inspiration and learning experience for me. Please check out his repo too! I'm sure you'll find it helpful.
- Authors of all the packages I have used, who made our lives easier.
If you found my work helpful, please consider supporting me by starring this repository and follow my GitHub. Your support will motivate me to create more project and improve my skills. Thanks!
Designed and developed by 2023 FarhanFDjabari
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.