import 'package:dio/dio.dart'; import 'package:flutter_dotenv/flutter_dotenv.dart'; import 'package:logger/logger.dart'; import 'package:shared_preferences/shared_preferences.dart'; var logger = Logger(printer: PrettyPrinter()); class Http { final Dio dio = Dio(); final String baseUrl = dotenv.env['BASE_URL'] ?? ''; Http() { dio.options.baseUrl = baseUrl; // dio.options.connectTimeout = const Duration(seconds: 120); // dio.options.receiveTimeout = const Duration(seconds: 120); // dio.options.sendTimeout = const Duration(seconds: 120); dio.interceptors.add( LogInterceptor( request: true, responseBody: false, requestBody: true, error: true, ), ); } Future> getHeaders() async { Map headers = {'Content-Type': 'application/json'}; var prefs = await SharedPreferences.getInstance(); String token = prefs.getString("token") ?? ""; headers['Authorization'] = 'Bearer $token'; return headers; } Future get(String url) async { Map headers = await getHeaders(); Response response; response = await dio.get(baseUrl + url, options: Options(headers: headers)); logger.i(response.data.toString()); return response.data; } Future post(String url, dynamic data) async { Map headers = {'Content-Type': 'application/json'}; Response response; response = await dio.post( baseUrl + url, data: data, options: Options(headers: headers), ); logger.i(response.data.toString()); return response.data; } Future put(String url, dynamic data) async { Map headers = await getHeaders(); Response response; response = await dio.put( baseUrl + url, data: data, options: Options(headers: headers), ); logger.i(response.data.toString()); return response.data; } Future delete(String url) async { Map headers = await getHeaders(); Response response; response = await dio.delete( baseUrl + url, options: Options(headers: headers), ); logger.i(response.data.toString()); return response.data; } }