본문 바로가기
new

Flutter에서 여러 곳에서 Stream을 Listening하는 방법: BroadcastStream 활용

by ftbd 2024. 3. 18.

Flutter에서 Stream은 데이터 스트림을 처리하는 데 유용한 기능입니다. 하지만 기본적으로 Stream은 한 곳에서만 listening할 수 있습니다. 여러 곳에서 동시에 Stream을 listening해야 하는 경우 어떻게 해야 할까요?

 

BroadcastStream이란 무엇일까요?

BroadcastStream은 여러 곳에서 동시에 listening할 수 있도록 설계된 Stream입니다. 일반 Stream과 달리, BroadcastStream은 데이터를 여러 구독자에게 동시에 전파합니다.

BroadcastStream 사용 방법

BroadcastStream을 사용하려면 다음 단계를 따르세요.

  1. StreamController 생성: StreamController.broadcast 생성자를 사용하여 BroadcastStream을 생성합니다.
  2. Stream 얻기: controller.stream 속성을 통해 Stream을 얻습니다.
  3. Listening 시작: listen 메서드를 사용하여 여러 곳에서 Stream을 listening합니다.
  4. 데이터 추가: controller.add 메서드를 사용하여 Stream에 데이터를 추가합니다.
  5. Stream 종료: controller.close 메서드를 사용하여 Stream을 종료합니다.

 

BroadcastStream 예시

다음 코드는 BroadcastStream을 사용하여 두 곳에서 동시에 Stream을 listening하는 예시입니다.

void main() {
  final controller = StreamController<int>.broadcast();

  // 첫 번째 곳에서 listening
  controller.stream.listen((data) {
    print('첫 번째 곳: $data');
  });

  // 두 번째 곳에서 listening
  controller.stream.listen((data) {
    print('두 번째 곳: $data');
  });

  // 데이터 추가
  controller.add(1);
  controller.add(2);
  controller.add(3);

  // Stream 종료
  controller.close();
}

 

BroadcastStream 사용 시 주의 사항

  • BroadcastStream은 메모리 누수를 방지하기 위해 명시적으로 종료해야 합니다.
  • 여러 곳에서 동시에 Stream을 listening하면 성능 저하가 발생할 수 있습니다.