Applez Nous: +41 22 518 70 00
La communication avec un serveur d’API REST distant s’effectue au moyen du package officiel http. Les opérations de lecture réseau retournent des Future<http.Response> traitées élégamment avec la syntaxe async / await :
import 'dart:convert';
import 'package:http/http.dart' as http;
Future<List<CoursMobile>> fetchCatalogueEnLigne() async {
final uri = Uri.parse('https://api.ecole-informatique.ch/v1/cours-mobiles');
final response = await http.get(uri);
if (response.statusCode == 200) {
final List<dynamic> corpsListe = jsonDecode(response.body);
return corpsListe.map((item) => CoursMobile.fromJson(item)).toList();
} else {
throw Exception('Échec de communication : code HTTP ${response.statusCode}');
}
}
Le widget natif FutureBuilder<T> écoute automatiquement l’évolution d’une tâche asynchrone et adapte l’interface selon son statut : spinner rotatif pendant le chargement (ConnectionState.waiting), affichage des données en cas de succès, ou message d’erreur si la promesse échoue.
Ne manipulez jamais de données JSON brutes non typées dans vos widgets. Créez des classes de modèles de données immuables dotées de constructeurs fromJson rigoureusement typés.
Synthèse pédagogique : Anticipez systématiquement le mode hors-ligne : une application mobile qui plante dès que l’utilisateur entre dans un tunnel ferroviaire suisse dégrade immédiatement sa note sur les stores.