fix: update Pokemon API integration to use Tyradex and improve type handling
This commit is contained in:
parent
c7be5241a2
commit
5b1ffaede8
@ -1,18 +1,18 @@
|
|||||||
import '../models/pokemon.dart';
|
import '../models/pokemon.dart';
|
||||||
|
import '../utils/pokemon_type.dart';
|
||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
import 'package:http/http.dart' as http;
|
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 http pour effectuer les requêtes
|
||||||
// On utilise la librairie dart:convert pour convertir les données JSON en objet Dart
|
// On utilise la librairie dart:convert pour convertir les données JSON en objet Dart
|
||||||
class PokemonApi {
|
class PokemonApi {
|
||||||
static const String baseUrl = 'pokeapi.co';
|
static const String baseUrl = 'tyradex.vercel.app';
|
||||||
static const String pokemonUrl = 'api/v2/pokemon';
|
static const String pokemonUrl = 'api/v1/pokemon';
|
||||||
|
|
||||||
static Future<Pokemon> getPokemon(int id) async {
|
static Future<Pokemon> getPokemon(int id) async {
|
||||||
// On utilise la méthode get de la classe http pour effectuer une requête GET
|
// 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
|
// 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"));
|
var response = await http.get(Uri.https(baseUrl, "$pokemonUrl/$id"));
|
||||||
if (response.statusCode != 200) {
|
if (response.statusCode != 200) {
|
||||||
// Si le code de retour de la requête n'est pas 200, on lève une exception
|
// 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
|
// 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);
|
var json = jsonDecode(response.body);
|
||||||
String name = json['name'];
|
// Récupération du nom en français
|
||||||
String type1 = (json['types'].length > 0 && json['types'][0]['type'] != null && json['types'][0]['type']['name'] != null) ? json['types'][0]['type']['name'] : "unknown";
|
String name = json['name']['fr'] ?? json['name']['en'] ?? '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 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
|
// On crée un objet Pokemon à partir du fichier JSON
|
||||||
return Pokemon(
|
return Pokemon(
|
||||||
name: name,
|
name: name,
|
||||||
id: id,
|
id: id,
|
||||||
type1: PokemonType.values.firstWhere((element) => element.toString() == 'PokemonType.$type1'),
|
type1: type1,
|
||||||
type2: type2 != null ? PokemonType.values.firstWhere((element) => element.toString() == 'PokemonType.$type2') : null,
|
type2: type2,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user