From 5b1ffaede82e1365d463b3e7a2d24982cc2ff95a Mon Sep 17 00:00:00 2001 From: Maxiwere45 Date: Tue, 3 Feb 2026 09:46:51 +0100 Subject: [PATCH] fix: update Pokemon API integration to use Tyradex and improve type handling --- lib/api/pokemon_api.dart | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/lib/api/pokemon_api.dart b/lib/api/pokemon_api.dart index 98236b9..a13b6c3 100644 --- a/lib/api/pokemon_api.dart +++ b/lib/api/pokemon_api.dart @@ -1,18 +1,18 @@ import '../models/pokemon.dart'; +import '../utils/pokemon_type.dart'; import 'dart:convert'; import 'package:http/http.dart' as http; -// Classe qui permet de récupérer les données des pokémons depuis l'API +// Classe qui permet de récupérer les données des pokémons depuis l'API Tyradex // On utilise la librairie http pour effectuer les requêtes // On utilise la librairie dart:convert pour convertir les données JSON en objet Dart class PokemonApi { - static const String baseUrl = 'pokeapi.co'; - static const String pokemonUrl = 'api/v2/pokemon'; + static const String baseUrl = 'tyradex.vercel.app'; + static const String pokemonUrl = 'api/v1/pokemon'; static Future getPokemon(int id) async { // On utilise la méthode get de la classe http pour effectuer une requête GET // On utilise Uri.https pour construire l'URL de la requête - // URI.https prends en paramètre le nom de domaine et le chemin de la requête var response = await http.get(Uri.https(baseUrl, "$pokemonUrl/$id")); if (response.statusCode != 200) { // Si le code de retour de la requête n'est pas 200, on lève une exception @@ -20,15 +20,24 @@ class PokemonApi { } // On utilise la méthode jsonDecode de la librairie dart:convert pour convertir le corps de la réponse en fichier JSON var json = jsonDecode(response.body); - String name = json['name']; - String type1 = (json['types'].length > 0 && json['types'][0]['type'] != null && json['types'][0]['type']['name'] != null) ? json['types'][0]['type']['name'] : "unknown"; - String? type2 = (json['types'].length > 1 && json['types'][1]['type'] != null && json['types'][1]['type']['name'] != null) ? json['types'][1]['type']['name'] : null; + // Récupération du nom en français + String name = json['name']['fr'] ?? json['name']['en'] ?? 'unknown'; + + // Récupération des types (en français dans l'API Tyradex) + List types = json['types'] ?? []; + PokemonType type1 = types.isNotEmpty + ? frenchTypeToEnum(types[0]['name']) + : PokemonType.unknown; + PokemonType? type2 = types.length > 1 + ? frenchTypeToEnum(types[1]['name']) + : null; + // On crée un objet Pokemon à partir du fichier JSON return Pokemon( name: name, id: id, - type1: PokemonType.values.firstWhere((element) => element.toString() == 'PokemonType.$type1'), - type2: type2 != null ? PokemonType.values.firstWhere((element) => element.toString() == 'PokemonType.$type2') : null, + type1: type1, + type2: type2, ); } } \ No newline at end of file