[flutter] dio_retry 패키지를 사용하여 API 호출 시 에러 메시지 표시하기

flutter 앱을 개발하다 보면 API 호출시 네트워크 문제로 발생하는 오류에 대처해야 하는 경우가 있습니다. 이때 dio_retry 패키지를 사용하면 API 호출이 실패했을 때 적절한 에러 메시지를 표시할 수 있습니다.

dio_retry 패키지란?

dio_retry는 flutter에서 HTTP 요청을 보낼 때 사용하는 dio 패키지의 인터셉터(interceptor) 중 하나로, 네트워크 요청 중 실패시 재시도할 수 있도록 도와주는 패키지입니다.

dio_retry 패키지 설치

먼저, pubspec.yaml 파일에 dio_retry 패키지를 추가합니다.

dependencies:
  dio: ^x.x.x # (현재 사용 중인 dio 패키지 버전)
  dio_retry: ^x.x.x

그리고 패키지를 설치합니다.

$ flutter pub get

dio_retry 패키지로 에러 처리

dio_retry 패키지를 사용하여 API 호출 시 에러 메시지를 표시하는 방법은 간단합니다. 다음은 예시 코드입니다.

import 'package:dio/dio.dart';
import 'package:dio_retry/dio_retry.dart';

void main() async {
  Dio dio = Dio();
  
  dio.interceptors.add(RetryInterceptor(
    dio: dio,
    options: const RetryOptions(
      retries: 3, // 재시도 횟수
      retryInterval: const Duration(seconds: 2), // 재시도 간격
    ),
  ));
  
  try {
    Response response = await dio.get('https://example.com/api/data');
    // 성공적으로 데이터를 받아온 경우 처리
  } on DioError catch (e) {
    // 에러 발생 시 처리
    if (e.type == DioErrorType.DEFAULT) {
      // 네트워크 문제로 인한 에러 메시지 표시
      print('네트워크 연결에 문제가 있습니다.');
    } else {
      // 기타 에러 처리
      print('에러가 발생했습니다: $e');
    }
  }
}

위 예시 코드에서 RetryInterceptor를 추가하여 dio에 재시도 기능을 설정하고, API 요청 시 DioError를 catch하여 네트워크 문제에 따른 에러 메시지를 표시하고 있습니다.

이와 같이 dio_retry 패키지를 사용하면 API 호출 시 네트워크 문제로 발생하는 에러를 쉽게 처리할 수 있습니다.

결론

dio_retry 패키지를 사용하여 flutter 앱에서 API 호출 시 발생하는 네트워크 문제에 대응하는 방법을 알아보았습니다. 이를 통해 사용자에게 적절한 에러 메시지를 제공하여 더 나은 사용자 경험을 제공할 수 있습니다.