apiClientProvider top-level property

Provider<ApiClient> apiClientProvider
final

Implementation

final apiClientProvider = Provider.autoDispose<ApiClient>((ref) {
  final logger = ref.watch(loggerServiceProvider);
  final env = ref.watch(envProvider);

  final dio = Dio(
    BaseOptions(
      baseUrl: env.baseUrl,
      connectTimeout: const Duration(seconds: 15),
      receiveTimeout: const Duration(seconds: 15),
      contentType: 'application/json',
      headers: {
        'x-api-key': env.apiKey,
      },
    ),
  );

  dio.interceptors.addAll([
    AuthInterceptor(ref), // Injected Ref for token access
    LoggingInterceptor(logger),
    ErrorInterceptor(),
  ]);

  return ApiClient(dio);
});