import 'package:dio/dio.dart'; import 'package:flutter_dotenv/flutter_dotenv.dart'; import '/models/init_get_it.dart'; import '/models/token_model.dart'; final baseUrl = dotenv.env['SERVER_HOST']; final userAvatarsUrl = '$baseUrl/static/avatars/user'; final groupChatAvatarsUrl = '$baseUrl/static/avatars/group_chat'; final baseOptions = BaseOptions( baseUrl: baseUrl!, connectTimeout: const Duration(seconds: 5), receiveTimeout: const Duration(seconds: 5), ); var request = Dio(baseOptions) ..interceptors.add( InterceptorsWrapper( onRequest: ( RequestOptions options, RequestInterceptorHandler handler, ) async { if (getIt.get().token != '') { options.headers['Authorization'] = 'Bearer ${getIt.get().token}'; } return handler.next(options); }, onResponse: (Response response, ResponseInterceptorHandler handler) { if (response.statusCode! >= 200 && response.statusCode! < 400) { if (response.headers.value('Authorization') != null) { // update token getIt .get() .updateToken(response.headers.value('Authorization')!); } return handler.resolve(response); } else { handler.reject( DioException.badResponse( statusCode: response.statusCode!, requestOptions: RequestOptions(), response: response, ), ); } }, onError: (DioException e, ErrorInterceptorHandler handler) { handler.reject(e); }, ), );