This repository contains the source code of the demo Pokédex (ポケモン図鑑, Pokémon Zukan, lit.: Pokémon Encyclopedia) application that I made for the lecture given for the Scuola di Ingegneria at the University of Bergamo. The application allows users to view the first 151 Pokémon in both list and grid format, navigate to their dedicated page, and view statistics.
- UniBG Pokédex with Flutter slides
- Moodboard for the UI of the app: Pokédex on Pinterest
Here are the most interesting packages used in the development of the application with a brief description:
- audioplayers: A Flutter plugin to play multiple audio files simultaneously
- flutter_animate: Add beautiful animated effects & builders in Flutter, via an easy, customizable, unified API
- palette_generator(DISCONTINUED): Flutter package for generating palette colors from a source image
- pinch_zoom: A widget based on Flutter's new Interactive Viewer that makes picture pinch zoom, and return to its initial size and position when released
- wolt_modal_sheet: This package provides a responsive modal with multiple pages, motion animation for page transitions, and scrollable content within each page
I used freezed to handle the json responses coming back from the API, but the generated *.freezed.dart
and *.g.dart
files were not committed, so before starting the project you need to run build_runner
in order to create them:
dart run build_runner build --delete-conflicting-outputs
video-sample.mp4
Home List | Home Grid | Settings |
---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Single Page (1) | Single Page (2) | Team AI |
---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Artificial intelligence was used to create parts of the UI, in particular to generate:
- the description of the Pokémon
- the information about the Pokèmon with which it is favoured
- the information about the Pokèmon you are disadvantaged with
- the creation of the best team given the chosen Pokémon
All these prompts and system instructions can be found in files /lib/service/kprompts.dart
and /lib/service/ai_service.dart
. The AI service used is Gemini, the configuration of which was done following these guides:
- Gemini API using Vertex AI in Firebase
- Get started with the Gemini API using the Vertex AI in Firebase SDKs
All the configurations for Firebase and Vertex AI are in files firebase.json
, android/app/google-services.json
and firebase_options.dart
that are not under version control. For the model I use gemini-2.0-flash-lite-001
, more on other models here: https://firebase.google.com/docs/vertex-ai/models
If you have any idea, feel free to fork it and submit your changes back to me.
UniBG Pokédex is released under the MIT license. You can use the code for any purpose, including commercial projects.