⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠴⠶⠒⣒⡒⠒⠤⠄⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡟⡀⠀⠀⠀⠀⠀⢠⡀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠑⠤⣀⠀⠁⠒⠄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣠⠆⢧⣀⡀⠀⠀⠀⣞⡇⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠳⣤⡀⠀⠀⠉⠐⠒⠂⠒⠒⠒⠂⠉⠁⠀⢸⠀⠸⡀⠀⠉⠒⢴⡋⢣⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠛⢿⣦⣄⣠⣤⣤⣤⣤⣤⣤⣀⣀⠀⣼⠀⠀⢣⠀⠀⠀⠀⣉⣺⡀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⠻⠿⣿⣿⣿⣿⣿⣿⣿⣿⣾⠀⣀⠀⠓⠀⠀⠀⠹⠣⡱⡀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠙⠛⠻⣿⣿⣿⡀⢸⣷⣦⣤⣀⠀⠀⢣⢹⡇⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢱⠈⠛⣷⠀⢿⣿⣿⣿⣿⣶⠞⠚⠃⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠻⡒⢄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠳⣄⠈⠱⢦⣙⣿⣿⡿⢧⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⣄⠳⡀⠀⠀⠀⣀⡀⠤⣤⠀⠀⠀⠀⠀⠀⠀⠀⢀⡀⠀⠀⠀⠀⠀⣀⠼⠀⠀⠑⠢⠼⡀⠀⠈⠉⠉⠁⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⣆⢈⡲⠒⠉⢀⡤⠊⠁⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣲⠤⠒⠈⠁⠀⠀⠀⠀⡤⠀⠈⣗⢄⡀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡿⢸⣿⣆⣰⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⠦⣄⡀⠀⠀⠀⠀⠀⡜⠀⠀⠀⠘⡀⠈⠢⡀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠞⠀⢀⣙⣟⠈⢆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣿⣖⢤⡀⠀⠠⡃⠀⠀⠀⠀⢗⣒⡤⠜⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠔⠁⠀⣠⠎⠉⢻⣦⠈⠣⡀⠀⠀⠀⠀⠀⠀⠀⢀⡀⠀⠀⠀⢀⠾⣿⡿⠟⠀⢰⢧⠀⠀⠀⠀⣻⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⢀⠀⠀⠀⠀⠀⠀⡎⠀⠀⡴⠁⠀⠀⠀⠙⢷⡄⠘⢄⠀⠀⠀⢀⢤⣊⣁⣈⡉⠒⢴⡓⠋⠁⠀⠀⠀⢸⡄⢣⡀⠀⠀⡟⢤⡀⠀⠀⠀⠀⠀
⠴⠮⠭⢤⡀⠈⠑⢄⠀⠀⢸⠀⠀⡼⢁⣀⣀⣀⠀⠀⠈⠻⣆⠀⠳⠔⣪⣟⣭⠷⠛⠓⠛⠛⠶⠮⢿⣷⣂⡄⠀⢸⣷⡀⠑⠤⣼⡡⠔⠃⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠈⢆⠀⠀⠓⢐⠏⠀⡸⠁⠀⠀⠀⣀⠬⠓⠊⠉⣹⡗⢀⣶⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⢀⠞⠻⠁⠀⣼⣿⣷⣄⣸⣿⡄⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠈⢷⠄⢠⠊⠀⢰⠃⡀⠤⠒⣿⠅⠀⠀⠀⢰⠁⣰⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⢀⡀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣇⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠳⢾⣷⠀⢸⢤⡤⠖⠉⠀⠀⠀⠀⢀⡎⠴⠻⠤⠤⢀⣀⠀⠀⣀⠀⠴⠎⠁⠀⠀⠀⢀⠀⠀⣿⣿⣿⢾⣽⡿⡇⠱⢄⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⢘⣾⡄⣼⠁⠀⠀⠀⠀⠀⠀⠀⠘⢷⢦⣤⣤⣤⣤⣬⣱⣏⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀⢠⣿⣾⣿⣯⣿⣿⡿⠀⠀⠉⣢⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⢸⣚⡇⢼⢔⡦⢄⣀⠀⠀⠀⠀⠀⠸⣧⠺⣍⠉⣉⠀⠀⠘⡷⠄⠀⠀⠀⠀⠀⠀⡸⢁⣾⢯⣿⣟⡾⣽⣿⣇⠀⢴⣴⠋⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠸⣏⢧⠘⡄⠈⠒⠤⡉⠐⡄⠀⠀⣠⣻⢇⠻⣦⡀⠉⠁⠒⢸⣼⠀⠀⠀⠀⠀⡰⢃⣾⣿⣿⣿⣾⣽⣿⣿⣿⡄⢸⠁⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⡎⣧⠘⡄⠀⠀⠘⡷⠇⢠⢞⡯⡱⢎⣷⣶⣝⣦⣄⡀⡼⣿⠀⠀⠀⠀⣰⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠇⢸⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⡬⢳⡘⡄⠀⢀⣾⢞⡵⣋⢶⡽⠻⣿⣿⣿⡏⠉⡟⣹⡿⡀⠀⠀⠀⣿⡛⣿⡿⣿⣿⡟⠋⢻⣿⣿⣿⠀⠀⢧⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢿⡱⢛⡜⢦⣾⡵⣋⢶⡽⠋⠀⠀⢻⣿⡟⠀⣸⠀⣏⠇⡇⠀⠀⢀⡟⣿⣏⠶⣱⠏⠀⠀⢸⣿⡉⠛⢄⠀⠈⢆⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣷⢩⢞⣶⣾⡗⡿⣏⠀⢄⠉⠉⣿⡉⠀⠀⡇⠀⣟⠀⠈⠒⠐⣺⣏⢿⣿⣾⠃⠀⠀⠀⠘⡍⢷⡀⠀⠈⠒⢺⠄⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⢟⣎⣾⣿⠻⡜⣇⠈⢧⡌⠀⢸⠁⢧⢀⣸⡇⠀⠹⡀⠀⢠⠞⢘⣧⣞⣻⡛⣧⠀⠀⠀⠀⢹⠀⡑⢄⠢⠤⡟⠘⡄⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡰⣣⠞⣬⠿⠚⢵⣍⢎⡳⣄⢳⡀⢹⠆⡾⠊⡇⠇⠀⢠⡇⠠⠟⢁⣼⡷⠋⠙⢷⣩⢧⡀⠀⠀⠀⣇⠘⡈⢆⠀⢻⠃⡶⠀
⠀⠀⠀⠀⠀⠀⠀⠀⢀⡾⣚⣵⠟⠁⠀⠀⠀⠈⢹⢶⠭⣗⣵⡃⡸⡰⠋⡼⠀⠀⠀⠃⠀⡔⠉⠁⠀⠀⠀⠀⠙⠻⣧⡀⠀⠀⠘⡄⢣⠈⠆⠀⢰⠁⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠿⠓⠉⠀⠀⠀⠀⠀⠀⡰⠁⢸⠐⡄⠀⢠⡷⢁⠜⠀⠀⠀⣀⣴⠟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠁⠀⠀⠀⡷⢈⡆⠀⠀⡇⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⡇⢠⣾⠀⢱⠀⣿⣧⠃⠀⠀⣠⢞⢿⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣧⠸⠀⠀⣸⡇⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢳⣱⣇⠀⠈⡆⡇⣿⠀⣠⠚⣡⠏⡞⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡇⠀⡆⠀⡏⡇⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⡷⢪⣧⡀⢀⡇⢻⡇⠀⣴⢫⢱⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢧⠀⠇⢸⠀⣇⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⡥⡇⠱⣾⣇⠘⣷⣞⢣⢳⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢇⠈⡜⠀⢸⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⠃⠀⠈⢿⣆⢿⢧⢣⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢳⣷⠀⠘⡆⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢾⡜⣧⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢷⡀⢰⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣘⡃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⣮⡇
Aplicación móvil desarrollada en Flutter que permite buscar y consultar información de Pokémon en tiempo real utilizando la PokéAPI, una API pública, gratuita y de código abierto.
- 🔍 Búsqueda de Pokémon por nombre o número de Pokédex, con debounce para no saturar la API.
- 🖼️ Listado en grid con artwork oficial de cada Pokémon.
- 📊 Pantalla de detalle con:
- Tipos (con su color oficial y traducción al español).
- Altura y peso.
- Habilidades.
- Estadísticas base (PS, Ataque, Defensa, Ataque Especial, Defensa Especial, Velocidad) con barras visuales.
- 🎨 Interfaz con temática clásica de Pokédex (rojo/blanco).
- ⚡ Cacheo en memoria del listado completo de Pokémon para búsquedas instantáneas tras la primera carga.
El proyecto sigue un patrón MVC simplificado:
lib/
├── main.dart # Punto de entrada de la app
├── model/
│ └── pokemon.dart # Modelos PokemonSummary y Pokemon + mapas de tipos/colores
├── controller/
│ └── pokemon_api.dart # Consumo de la PokéAPI (búsqueda y detalle)
└── view/
├── search_page.dart # Pantalla de búsqueda / listado
└── pokemon_detail_page.dart # Pantalla de detalle del Pokémon
Este proyecto consume PokéAPI (v2), específicamente:
GET /pokemon?limit=1302→ listado completo (nombre + id) usado para la búsqueda local.GET /pokemon/{id}→ detalle completo de un Pokémon (tipos, stats, habilidades, sprites, etc).
No requiere API key.
- Flutter SDK instalado (canal estable).
- Un emulador Android/iOS configurado o un dispositivo físico conectado.
# 1. Clonar el repositorio
git clone https://github.com/tu-usuario/pokedex-flutter.git
cd pokedex-flutter
# 2. Instalar dependencias
flutter pub get
# 3. Ejecutar la app
flutter run| Paquete | Uso |
|---|---|
http |
Peticiones HTTP a la PokéAPI |
flutter_lints |
Reglas de linting |
Este proyecto es de uso académico/personal. Los datos y sprites son propiedad de Nintendo/Game Freak y son servidos por PokéAPI bajo su propia licencia.