Search
🌊

StreamController → StreamBuilder

StreamController

단일의 스트림을 만들고 다른 클래스가 이를 listen 할 수 있게하고 stream 을 통해 이벤트를 push 하는데 사용된다.
컨트롤러는
데이터 전송
에러 전송
이벤트 종료
등등을 할수 있게 해준다.

HOW TO USE

1. StreamContoller 인스턴스 생성 (이벤트 송신부)

final photoStreamController = StreamController<List<Photo>>()..add([]); Stream<List<Photo>> get photoStream = photoStreamController.stream;
Dart
복사

2. StreamBuilder 에 연결 (이벤트 수신부 = Widget)

StreamBuilder( stream: photoStream, builder: (context, snapshot) { if (snapshot.connectionState == ConnectionState.waiting) { return CircularProgressIndicator(); } final photos = snapshot.data!; return // photos를 사용해서 Widget 을 그려주면 된다. }, )
Dart
복사

HOW TO 데이터 전송(발행)

add, addStream
streamController.add(999); final stream = Stream<int>.periodic( const Duration(milliseconds: 200), (count) => count * count).take(4); await streamController.addStream(stream);
Dart
복사

HOW TO 에러 전송

streamController.addError(Exception('Issue 101')); await streamController.addStream(Stream.error(Exception('Issue 404')));
Dart
복사

HOW TO 구독 취소

메모리 누수를 방지하기 위해 구독을 취소할 수 있다.
await streamController.close(); isClosed = streamController.isClosed; // true
Dart
복사