Files
AAU-Store/lib/utils/api_client.dart
2026-04-12 17:11:24 +08:00

89 lines
1.9 KiB
Dart

import 'dart:io';
import 'package:dio/dio.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:laundry_seller/utils/request_handler.dart';
class ApiClient {
final Dio _dio = Dio();
ApiClient() {
addApiInterceptors(_dio);
}
Map<String, dynamic> defaultHeaders = {
HttpHeaders.authorizationHeader: null,
};
Future<Response> get(String url, {Map<String, dynamic>? query}) async {
return _dio.get(
url,
queryParameters: query,
options: Options(headers: defaultHeaders),
);
}
Future<Response> post(
String url, {
dynamic data,
Map<String, dynamic>? headers,
}) async {
return _dio.post(
url,
data: data,
options: Options(
headers: headers ?? defaultHeaders,
followRedirects: false,
validateStatus: ((status) {
return status! <= 500;
}),
),
);
}
Future<Response> put(
String url, {
Map<String, dynamic>? data,
Map<String, dynamic>? headers,
}) async {
return _dio.put(
url,
data: data,
options: Options(
headers: headers ?? defaultHeaders,
followRedirects: false,
validateStatus: ((status) {
return status! <= 500;
}),
),
);
}
Future<Response> delete(
String url, {
Map<String, dynamic>? data,
Map<String, dynamic>? headers,
}) async {
return _dio.delete(
url,
data: data,
options: Options(
headers: headers ?? defaultHeaders,
followRedirects: false,
validateStatus: ((status) {
return status! <= 500;
}),
),
);
}
void updateToken({required String token}) {
defaultHeaders[HttpHeaders.authorizationHeader] = 'Bearer $token';
debugPrint(
'Update Token:${defaultHeaders[HttpHeaders.authorizationHeader]}');
}
}
final apiClientProvider = Provider((ref) => ApiClient());