Retrofit под капотом использует Dio - пакет для взаимодействия с сетью. Для начала работы нам нужно создать абстрактный класс, из которого будет сгенерирован код для запросов к API:
part "my_service.g.dart";
@RestApi()
abstract class MyService {
factory MyService (Dio dio) = _MyService;
@GET('/todos')
Future<List<Todo>> getTodos();
@Post(‘/todos’)
Future<void> addTodo({
@Body required CreateTodoBody body,
});
}
Для создания общей логики обработки запросов используется класс
Interceptor с методами onRequest, onResponse и onError, который обрабатывает запросы, ответы и ошибки. Лучше использовать разные интерсепторы для различной логики вместо создания одного для обработки всего и сразу.Чтобы отменить запрос, например, если у пользователя пропало интернет-соединение, нужно сделать это в методе
onRequest:return handler.reject(MyException(),requestOptions: options);
И для использования нашего сервиса необходимо передать в него Dio:
Dio dio = Dio();
dio.options.baseUrl = ‘http://example.com/api’;
final client = MyService(dio);
await client.getTodos();
Делитесь в чате, что вы используете - Chopper или Retrofit?
