89 lines
1.9 KiB
Dart
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());
|