fiat 0.0.1+4.4
fiat: ^0.0.1+4.4 copied to clipboard
Fiat est un **wrapper conçu pour simplifier les appels API RESTful**
example/main.dart
import 'package:fiat/fiat_client.dart';
import 'package:fiat/fiat.dart';
void main() async {
Fiat.init(FiatConfig(
baseUrl: 'https://api.example.com',
debugMode: true,
showErrorSnackbarByDefault: true,
defaultHeaders: {'Content-Type': 'application/json'},
maxRetryAttempts: 3,
retryPolicy: DefaultRetryPolicy(
maxAttempts: 3,
baseDelay: const Duration(seconds: 1),
exponentialBackoff: true,
),
connectTimeout: const Duration(seconds: 15),
receiveTimeout: const Duration(seconds: 30),
tokenGetter: () async => 'your_token_here',
refreshTokenGetter: () async => 'your_refresh_token_here',
onTokenUpdated: (newToken) async {
print('Token mis à jour : $newToken');
},
onUnauthorized: () {
print('Utilisateur non autorisé. Redirection vers la page de connexion.');
},
customErrorMessages: {
404: 'Ressource non trouvée.',
500: 'Erreur interne du serveur.',
},
));
await _getExample();
await _postExample();
await _putExample();
await _deleteExample();
}
// Exemple GET
Future<void> _getExample() async {
print('\n=== [GET] /posts/1 ===');
final result = await Fiat.get<Map<String, dynamic>>(
'/posts/1',
fromJson: (data) => data as Map<String, dynamic>,
onLoadingStart: () => print('GET -> Chargement...'),
onLoadingEnd: () => print('GET -> Fini !'),
);
result.isSuccess ? print('POST -> Succès') : print('POST -> Échec');
result.isNotFound
? print('POST -> Ressource non trouvée')
: print('POST -> Autre erreur');
result.isUnauthorized
? print('POST -> Non autorisé')
: print('POST -> Autorisé');
result.error != null
? print('POST -> Erreur: ${result.error}')
: print('POST -> Pas d\'erreur');
}
// Exemple POST
Future<void> _postExample() async {
print('\n=== [POST] /posts ===');
final body = {
"title": "Hello Fiat",
"body": "Ceci est un test POST",
"userId": 1,
};
final result = await Fiat.post<Map<String, dynamic>>(
'/posts',
data: body,
fromJson: (data) => data as Map<String, dynamic>,
onLoadingStart: () => print('POST -> Chargement...'),
onLoadingEnd: () => print('POST -> Fini !'),
);
result.isSuccess ? print('POST -> Succès') : print('POST -> Échec');
result.isNotFound
? print('POST -> Ressource non trouvée')
: print('POST -> Autre erreur');
result.isUnauthorized
? print('POST -> Non autorisé')
: print('POST -> Autorisé');
result.error != null
? print('POST -> Erreur: ${result.error}')
: print('POST -> Pas d\'erreur');
}
// Exemple PUT
Future<void> _putExample() async {
print('\n=== [PUT] /posts/1 ===');
final update = {
"id": 1,
"title": "Titre mis à jour",
"body": "Corps mis à jour",
"userId": 1,
};
final result = await Fiat.put<Map<String, dynamic>>(
'/posts/1',
data: update,
fromJson: (data) => data as Map<String, dynamic>,
onLoadingStart: () => print('PUT -> Chargement...'),
onLoadingEnd: () => print('PUT -> Fini !'),
);
result.isSuccess ? print('POST -> Succès') : print('POST -> Échec');
result.isNotFound
? print('POST -> Ressource non trouvée')
: print('POST -> Autre erreur');
result.isUnauthorized
? print('POST -> Non autorisé')
: print('POST -> Autorisé');
result.error != null
? print('POST -> Erreur: ${result.error}')
: print('POST -> Pas d\'erreur');
;
}
// Exemple DELETE
Future<void> _deleteExample() async {
print('\n=== [DELETE] /posts/1 ===');
final result = await Fiat.delete<Map<String, dynamic>>(
'/posts/1',
fromJson: (data) => data as Map<String, dynamic>? ?? {},
onLoadingStart: () => print('DELETE -> Chargement...'),
onLoadingEnd: () => print('DELETE -> Fini !'),
);
result.isSuccess ? print('POST -> Succès') : print('POST -> Échec');
result.isNotFound
? print('POST -> Ressource non trouvée')
: print('POST -> Autre erreur');
result.isUnauthorized
? print('POST -> Non autorisé')
: print('POST -> Autorisé');
result.error != null
? print('POST -> Erreur: ${result.error}')
: print('POST -> Pas d\'erreur');
}