본문 바로가기
new

Dart Stream: 데이터 흐름을 쉽게 처리하는 방법

by ftbd 2024. 3. 18.

Stream이란 무엇일까요?

Stream은 데이터 흐름을 추상화하는 Dart의 강력한 기능입니다. 시간이 지남에 따라 순차적으로 발생하는 데이터를 처리하는 데 유용합니다. 예를 들어, 센서 데이터, 네트워크 응답, 사용자 입력 등을 처리하는 데 사용할 수 있습니다.

Stream 예시: 숫자 카운트

다음 코드는 countStream이라는 Stream 함수를 보여줍니다. 이 함수는 1부터 max까지 숫자를 1초 간격으로 순차적으로 출력합니다.

 

Stream<int> countStream(int max) async* {
  for (int i = 1; i <= max; i++) {
    await sleepAsync(1.seconds);
    yield i;
  }
}

 

코드 설명:

  • async*: 비동기 Stream 함수임을 나타냅니다.
  • yield: Stream에 값을 전달합니다.
  • sleepAsync(1.seconds): 1초 동안 일시 중지합니다.

Stream 사용

다음 코드는 countStream 함수를 사용하여 1부터 5까지 숫자를 출력하는 예시입니다.

void main() async {
  final stream = countStream(5);
  stream.listen((number) {
    print(number);
  });
}

 

코드 설명:

  • listen: Stream을 구독하고 데이터가 도착할 때마다 callback 함수를 실행합니다.
  • callback: Stream에서 전달된 데이터를 처리합니다.

 

Stream의 장점

  • 데이터 흐름을 추상화하여 코드를 더 간결하고 이해하기 쉽게 만듭니다.
  • 비동기 작업을 처리하는 데 유용합니다.
  • 여러 컴포넌트 간에 데이터를 쉽게 공유할 수 있습니다.