Files
flutter-frame/lib/core/network/dio_client.dart
2026-03-01 07:55:59 +09:00

45 lines
1.1 KiB
Dart

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;
}