Dart에서 Future와 async/await 이해하기
1. Dart의 Thread
- Dart는 싱글 쓰레드 기반
- Event loop를 통해 비동기 작업 처리
- Android의 Looper와 유사한 개념
2. Future란?
- Future는 미래의 값을 나타내는 객체
- 실행 순서:
- Dart가 Future 객체를 내부 배열에 등록
- 관련 코드가 이벤트 큐에 등록
- 불완전한 Future 객체 반환
- 동기(Synchronous) 코드 먼저 실행
- Future 완료 시 실제 데이터 전달

예제: Future + then
Future 실행은 비동기, then으로 결과 처리
Future<String> fetchData() {
return Future.delayed(Duration(seconds: 2), () => "데이터 완료");
}
void main() {
print('요청 시작');
fetchData().then((data) {
print(data);
});
print('다음 코드 실행');
}
출력 결과
요청 시작
다음 코드 실행
데이터 완료
3. Async Method
- async가 붙은 메소드는 Future 반환
- await 키워드 등장 시 해당 Future 완료까지 대기
- 완료 후 다음 코드 실행
- await는 동기(Sync)처럼 동작하지만, 실제로는 백그라운드에서 처리.
Future<String> fetchData() async {
await Future.delayed(Duration(seconds: 2));
return "데이터 처리 완료";
}
void main() async {
print('요청 시작');
String result = await fetchData();
print(result);
print('다음 코드 실행');
}
출력 결과
요청 시작
데이터 처리 완료
다음 코드 실행

정리
- Future: 나중에 완료될 비동기 작업
- then: Future 완료 시 실행할 코드
- async/await: Future를 동기 코드처럼 작성 가능
- Event loop 덕분에 싱글 쓰레드에서도 비동기 처리 가능
'Flutter > 2.0' 카테고리의 다른 글
| Flutter Networking (api, json parsing) 실습 (0) | 2021.08.17 |
|---|---|
| Flutter Future, async, await 이해하기 (0) | 2021.08.17 |
| Flutter 로그인 페이지 실습 코드 리팩토링 (0) | 2021.08.17 |
| Flutter 로그인과 주사위 앱 실습 (0) | 2021.08.17 |
| Flutter: StatefulWidget 살펴보기 (0) | 2021.08.16 |