Exercices avancés
State Management
Section titled “State Management”Mise en pratique : Application du principe de séparation Vue/Logique métier
Objectifs :
- Comprendre les limites de
setState - Utiliser des notificateurs de changements
- Implémenter des packages de state management (Provider, Bloc, etc.)
HTTP et communication serveur
Section titled “HTTP et communication serveur”Exercices pratiques :
- GET Request : Récupération de données depuis une API
- POST Request : Envoi de données vers un serveur
- Gestion d’erreurs : Traitement des erreurs réseau
- Authentification : Gestion des tokens et headers
Exemple POST :
http.post( Uri.parse('http://localhost:8080/reply'), body: '{"msgId":123}', headers: {'authorization': token},);Tests et qualité
Section titled “Tests et qualité”Types de tests à pratiquer :
- Tests unitaires : Logique métier
- Tests de widgets : Interface utilisateur
- Tests d’intégration : Flux complets
- Golden tests : Rendu visuel
Exemple de test de widget :
import 'package:flutter/material.dart';import 'package:flutter_test/flutter_test.dart';
void main() { testWidgets('Counter increments smoke test', (WidgetTester tester) async { // Build our app and trigger a frame await tester.pumpWidget(const MyApp());
// Verify that our counter starts at 0 expect(find.text('0'), findsOneWidget); expect(find.text('1'), findsNothing);
// Tap the '+' icon and trigger a frame await tester.tap(find.byIcon(Icons.add)); await tester.pump();
// Verify that our counter has incremented expect(find.text('0'), findsNothing); expect(find.text('1'), findsOneWidget); });}