class ApiClient {
late final Dio _dio;
ApiClient({required String baseUrl, String? token}) {
_dio = Dio(BaseOptions(
baseUrl: baseUrl,
connectTimeout: const Duration(seconds: 10),
receiveTimeout: const Duration(seconds: 10),
headers: {
'Content-Type': 'application/json',
if (token != null) 'Authorization': 'Bearer $token',
},
));
_dio.interceptors.addAll([
LogInterceptor(requestBody: true, responseBody: true),
AuthInterceptor(_dio),
RetryInterceptor(_dio),
]);
}
Future<List<User>> getUsers() async {
final response = await _dio.get('/users');
return (response.data as List).map((json) => User.fromJson(json)).toList();
}
}