일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- dart
- keychain error
- valorant api dart
- dart new 키워드
- riot api dart
- tft api dart
- widget
- 롤 api dart
- leetcode dart
- 파이썬 부동소수점
- 발로란트 api dart
- swift concurrency
- flutter statefulwidget
- 롤토체스 api dart
- Architectural overview
- flutter widget
- flutter
- com.google.GIDSignIn
- flutter ios 폴더
- dart new
- lol api dart
- dart.dev
- generate parentheses dart
- flutter android 폴더
- flutter bloc
- AnimationController
- PlatformException(sign_in_failed
- 파이썬
- docker overview
- swift 동시성
- Today
- Total
Coaspe
Dart - Future를 취소하는 법 본문
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
'Dart' 카테고리의 다른 글
Riot API를 위한 Dart 패키지를 만들었습니다! (0) | 2023.02.17 |
---|---|
dart.dev 번역 작업 프로젝트가 승인되어 공식 홈페이지에 기재되었습니다! (2) | 2023.02.17 |
Dart - extends vs implements vs with (0) | 2023.02.17 |
Dart - dynamic vs never vs object (0) | 2022.11.01 |