import 'package:dartz/dartz.dart'; import 'package:dio/dio.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter_project/configs/app_configs.dart'; import 'package:flutter_project/shared/data/remote/network_service.dart'; import 'package:flutter_project/shared/domain/models/response.dart' as response; import 'package:flutter_project/shared/exceptions/http_exception.dart'; import 'package:flutter_project/shared/globals.dart'; import 'package:flutter_project/shared/mixins/exception_handler_mixin.dart'; class DioNetworkService extends NetworkService with ExceptionHandlerMixin { final Dio dio; DioNetworkService(this.dio) { // this throws error while running test if (!kTestMode) { dio.options = dioBaseOptions; if (kDebugMode) { dio.interceptors .add(LogInterceptor(requestBody: true, responseBody: true)); } } } BaseOptions get dioBaseOptions => BaseOptions( baseUrl: baseUrl, headers: headers, ); @override String get baseUrl => AppConfigs.baseUrl; @override Map get headers => { 'accept': 'application/json', 'content-type': 'application/json', }; @override Map? updateHeader(Map data) { final header = {...data, ...headers}; if (!kTestMode) { dio.options.headers = header; } return header; } @override Future> post(String endpoint, {Map? data}) { final res = handleException( () => dio.post( endpoint, data: data, ), endpoint: endpoint, ); return res; } @override Future> get(String endpoint, {Map? queryParameters}) { final res = handleException( () => dio.get( endpoint, queryParameters: queryParameters, ), endpoint: endpoint, ); return res; } }