-
Flutter - Future, async, awaitFlutter 2021. 10. 7. 00:15반응형
[Future]
- 미래에 구체적인 결과물로 실제적인 객체로 반환된다는 의미
- 일종의 약속이자, 해당 결과를 추후에 확인 가능하다는 의미
- Future 클래스는 일정 소요시간이 지난 후에 실제 데이터 값이나, 에러가 있는 경우 에러를 반환한다.
- Future 클래스는 Future<String>같이, 제네릭처럼 어떤 결과물을 받아야 할지 미리 지정해둘 수 있다.
- Future<void>와 일반 void 함수의 차이점은 언제 함수의 실행이 끝날지 지정해 줄수 있다는 것.
[async]
- async 클래스는 await 메서드를 가지고 있다.
- await 으로 선언된 메서드는 응답이 처리될 때 까지 대기하는 비동기 식으로 동작한다.
- async제어자는 항상 중괄호 앞에 선언해야 한다. 선헌하게 되면 await 키워드를 사용할 수 있게 된다.
[예제 코드]
import 'dart:io'; void main() { showData(); } void showData() async{ startTask(); String account = await accessData(); fetchData(account); } void startTask() { String info1 = '요청 수행 시작'; print(info1); } Future<String> accessData() async{ String account; Duration time = Duration(seconds: 3); if (time.inSeconds > 2) { //sleep(time); // await 키워드는 Future.delayed의 실행이 다 될때까지 기다리라는 의미 await Future.delayed(time, () { account = '8,500만원'; print(account); }); } else { String info2 = '데이터를 가져왔습니다.'; print(info2); } return account; } void fetchData(String account) { String info3 = '잔액은 $account 입니다.'; print(info3); }
300x250'Flutter' 카테고리의 다른 글
flutter - Error: The argument type 'String' can't be assigned to the parameter type 'Uri'.dart(argument_type_not_assignable) (0) 2021.10.10 Flutter - Thread, Future, async 심화 (0) 2021.10.09 flutter - 2.0 button ElevatedButton으로 구글, 페이스북, 메일 로그인 버튼 만들기 (1) 2021.10.06 Flutter - final 과 const (0) 2021.10.06 Flutter - APK 파일 생성하기 (0) 2021.09.15