[flutter] 플러터(Flutter)에서 비동기 작업 처리 방법은?

Future와 async/await

플러터에서 비동기 작업은 Futureasync/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}');
    }
  },
);

플러터에서는 이 외에도 StreamStreamBuilder를 사용하여 스트림 기반의 비동기 작업을 처리할 수도 있습니다.

이렇게 플러터에서는 Futureasync/await 키워드를 활용하여 간편하게 비동기 작업을 처리할 수 있습니다.

자세한 내용은 공식 문서를 참고하세요.