import 'dart:developer'; import 'dart:io'; import 'package:dio/dio.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import '../../authentication/bloc/authentication_bloc.dart'; import '../../common/const_enum.dart'; import '../../main.dart'; import '../../utils/local_storage.dart'; class DioProvider { static Dio dio = Dio(); static Dio instance() { dio.options.baseUrl = 'https://tpf.aztrace.vn/'; // (dio.httpClientAdapter as DefaultHttpClientAdapter).onHttpClientCreate = (HttpClient client) { // client.badCertificateCallback = (X509Certificate cert, String host, int port) => true; // return client; // }; dio.interceptors.add( InterceptorsWrapper( onRequest: (options, handler) { var token = LocalStorage.getString(LocalStorageKey.access_token); if (token.isNotEmpty) { options.headers['Authorization'] = 'Bearer $token'; } options.headers['Content-Type'] = 'application/json'; options.headers['accept'] = 'application/json'; log('⭐⭐⭐⭐⭐⭐ onRequest: ${options.uri}\n' 'data=${options.data}\n' 'method=${options.method}\n' 'headers=${options.headers}\n' 'queryParameters=${options.queryParameters}'); return handler.next(options); }, onResponse: (response, handler) async { // log('🍏🍏🍏🍏🍏🍏 onResponse: $response'); return handler.next(response); }, onError: (DioError e, handler) async { log('🔥🔥🔥🔥🔥🔥 onError: $e\n' 'Response: ${e.response}'); handler.next(e); }, ), ); return dio; } static void logoutAndNavigationToSplashScreen() { LocalStorage.clearUserInfo(); BlocProvider.of(globalNavigator.currentContext!).add( const AuthenticationStatusChanged( AuthenticationStatus.unauthenticated, ), ); } }