Coaspe

Dart - Future를 취소하는 법 본문

Dart

Dart - Future를 취소하는 법

Coaspe 2023. 2. 17. 13:54

Dart의 async package를 사용하면, Future를 쉽게 취소 할 수 있습니다.

 

제가 만들고 있는 앱에서는 Google map의 CameraPosition을 기준으로 변경 될 때마다, 주변 가게에 대한 정보 API 요청을 전송합니다.

 

그런데 요청에 대한 처리가 끝나기 전에 CameraPosition을 마구 움직이게 되면 Future가 쌓이게 되므로 Future를 취소 할 수 있는 기능이 필요했습니다.

 

async package를 다음 받은 후 CancelableOperation 변수를 선언합니다.

CancelableOperation? _fetch;

CancelableOperation?으로 선언하는 이유는 현재 진행중인 요청이 없을 수도 있기 때문입니다.

그리고 Future를 취소, 등록하는 코드는 다음과 같습니다.

    if (_fetch != null) _fetch!.cancel();
    _fetch = CancelableOperation.fromFuture(
      // Future를 반환하는 함수,
      onCancel: () {
        print('Cancel');
      },
    );

다음과 같이 가게 정보 요청이 끝나기 전, 즉 로딩 중이 떠 있을 때 CameraPosition을 움직이게 되면 Cancel이 print 됩니다.

 

 

Flaticon 출처

 

떡볶이 아이콘 제작자: BZZRINCANTATION - Flaticon Pasta icons created by Freepik - Flaticon Sushi icons created by Freepik - Flaticon Food icons created by Freepik - Flaticon Wine icons created by Freepik - Flaticon Beer icons created by Freepik - Flaticon Cafe icons created by Smashicons - Flaticon Chicken icons created by Freepik - Flaticon Hamburger icons created by Freepik - Flaticon Buffet icons created by Freepik - Flaticon Bread icons created by Freepik - Flaticon Food delivery icons created by Freepik - Flaticon Restaurant icons created by Eucalyp - Flaticon Chinese icons created by Freepik - Flaticon Cuisine icons created by Flat Icons - Flaticon

Comments