import 'package:dio/dio.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; import 'package:talker_dio_logger/talker_dio_logger.dart'; import '../constants/api_constants.dart'; import '../logging/app_logger.dart'; import 'auth_interceptor.dart'; import 'token_refresh_interceptor.dart'; part 'dio_client.g.dart'; @Riverpod(keepAlive: true) Dio dio(Ref ref) { final dio = Dio( BaseOptions( baseUrl: ApiConstants.baseUrl, connectTimeout: ApiConstants.connectTimeout, receiveTimeout: ApiConstants.receiveTimeout, sendTimeout: ApiConstants.sendTimeout, headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', }, ), ); final talker = ref.read(appLoggerProvider); dio.interceptors.addAll([ AuthInterceptor(ref: ref), TokenRefreshInterceptor(ref: ref, dio: dio), TalkerDioLogger( talker: talker, settings: const TalkerDioLoggerSettings( printRequestHeaders: true, printResponseHeaders: false, printResponseData: true, ), ), ]); return dio; }