소개
Flutter에서 Future는 비동기적으로 작동하는 데이터 처리를 위한 객체입니다. 이 객체는 비동기적인 작업이 완료되면 반환값을 제공합니다. 이를 통해 UI가 차단되는 것을 방지하고, 앱의 반응성을 유지할 수 있습니다.
Future의 사용
Flutter에서는 비동기 작업을 위해 Future 클래스를 사용합니다. 이 클래스는 비동기 작업을 수행하는 함수를 인자로 받아 Future 객체를 반환합니다. 이 객체는 비동기 작업이 완료되면 반환값을 가집니다.
Future<String> fetchData() async {
// 비동기 작업을 수행하는 함수
return "Data fetched successfully!";
}
위의 코드는 String을 반환하는 fetchData() 함수를 정의한 것입니다. 이 함수는 Dart의 async/await 키워드를 사용하여 비동기적으로 작동합니다.
Future의 상태
Future 클래스는 작업의 상태에 따라 다양한 속성을 가집니다. 예를 들어, Future 객체는 작업이 완료되었는지 여부를 알려주는 isCompleted 속성을 가집니다. 작업이 완료되었다면, Future 객체는 결과값을 저장하고, isCompleted 속성은 true를 반환합니다.
Future<String> fetchData() async {
// 비동기 작업을 수행하는 함수
return "Data fetched successfully!";
}
void main() async {
// Future 객체 생성
Future<String> future = fetchData();
// Future 객체의 상태 확인
print("Is future completed? ${future.isCompleted}");
// Future 객체의 결과값 출력
print(await future);
}
위의 코드는 fetchData() 함수를 호출한 후, Future 객체를 생성하고, 상태를 확인하는 예시입니다. isCompleted 속성은 false를 반환하고, 결과값은 "Data fetched successfully!"가 출력됩니다.
Future의 에러 처리
비동기 작업이 실패하면, Future 객체는 예외를 발생시킵니다. 이 예외를 처리하기 위해서는 try-catch 블록을 사용할 수 있습니다.
Future<String> fetchData() async {
throw Exception("Error occurred!");
}
void main() async {
// Future 객체 생성
Future<String> future = fetchData();
// Future 객체의 에러 처리
try {
print(await future);
} catch (e) {
print(e);
}
}
위의 코드는 fetchData() 함수에서 예외를 발생시키고, try-catch 블록을 사용하여 예외를 처리하는 예시입니다. 결과값은 "Exception: Error occurred!"가 출력됩니다.
이렇게 Flutter에서는 Future 클래스를 사용하여 비동기 작업을 처리할 수 있습니다. 이를 통해 UI의 반응성을 유지하면서, 데이터 처리 작업을 효율적으로 수행할 수 있습니다.
'Flutter' 카테고리의 다른 글
Flutter의 상태 관리: Provider, Riverpod 및 BLoC 환경 탐색 (0) | 2023.08.23 |
---|---|
Flutter 애니메이션 : 생동감 있는 인터페이스 구현 (0) | 2023.08.22 |
Flutter에서 const, final, late의 차이 (0) | 2023.05.25 |
Flutter 언어의 자료형 (0) | 2023.05.24 |
Flutter에서 Stateful과 Stateless Widget (0) | 2023.05.23 |