[flutter] 플러터(Flutter)에서 비동기 작업 처리 방법은?
Future와 async/await
플러터에서 비동기 작업은 Future
와 async/await
키워드를 사용하여 처리합니다. Future
는 비동기 작업의 결과를 나타내는 객체이고, async
키워드는 비동기 함수를 정의할 때 사용됩니다. await
는 비동기 함수 내에서 Future
의 작업이 완료될 때까지 대기하고 그 결과를 반환합니다.
다음은 간단한 예제 코드입니다.
Future<void> fetchData() async {
// 네트워크 요청이나 다른 비동기 작업을 수행
// 결과를 반환하려면 return 문을 사용
}
void main() {
fetchData().then((value) {
// 비동기 작업이 끝난 후 처리할 내용
});
}
FutureBuilder 위젯
FutureBuilder
위젯을 사용하면 Future
의 결과에 따라 UI를 동적으로 업데이트할 수 있습니다. 이 위젯은 Future
를 기다리고 그 결과에 따라 다른 UI를 반환합니다.
FutureBuilder<String>(
future: fetchData(), // 비동기 작업을 수행하는 Future
builder: (BuildContext context, AsyncSnapshot<String> snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
// 로딩 중일 때 표시할 UI
} else if (snapshot.hasError) {
// 에러 발생 시 표시할 UI
return Text('Error: ${snapshot.error}');
} else {
// 결과가 있을 때 표시할 UI
return Text('Data: ${snapshot.data}');
}
},
);
플러터에서는 이 외에도 Stream
과 StreamBuilder
를 사용하여 스트림 기반의 비동기 작업을 처리할 수도 있습니다.
이렇게 플러터에서는 Future
와 async/await
키워드를 활용하여 간편하게 비동기 작업을 처리할 수 있습니다.
자세한 내용은 공식 문서를 참고하세요.