import 'dart:developer'; import 'package:dio/dio.dart'; import 'package:flutter_project/components/utils/error_callback.dart'; import 'package:flutter_project/data/mappers/animes_mapper.dart'; import 'package:flutter_project/data/repositories/api_interface.dart'; import '../../domain/models/home.dart'; import '../dtos/animes_dto.dart'; class AnimeRepository extends ApiInterface { static final Dio _dio = Dio(); static const String _baseUrl = "https://api.jikan.moe"; @override Future loadData( {OnErrorCallback onError, String? q, int page = 1, int pageSize = 25}) async { try { const String url = "$_baseUrl/v4/anime?sfw"; final Response response = await _dio.get>(url, queryParameters: {'q': q, 'page': page, 'limit': !(pageSize > 25) ? pageSize : 25}); final AnimesDto dto = AnimesDto.fromJson(response.data as Map); final HomeData data = dto.toDomain(); return data; } on DioException catch (e) { Response? errorResp = e.response; onError?.call(e.error?.toString()); log("Exception. ${errorResp?.data['message']}", error: e); return null; } } }