코틀린의 특징이라면, 라이브데이터 활용에 있다고 생각한다.
MVVM 패턴 (c# 등 다른곳에서 사용하는 MVVM 패턴과는 다르다) 을 적용하면서, ViewModel과 View 간
livedata, observe를 통해 마치 커스텀 이벤트를 발생하는것 처럼 처리 하는것이 기본적인 구조이다.
플러터에는 Stream이 있고, observe 처럼 듣고 있다가이벤트를 받아 처리하는 방식으로 동작한다.
단, stream의 경우 1군데로 밖에 알림을 주지 못한다. 즉, 1:1 관계이고, 1:N 을 위해서는 브로드캐스트 스트림을
해야 한다.
스트림을 통해 전달되는 값은 class도 전달이 가능하다.
- 기본적인 스트림
//스트림 컨트롤러 생성
StreamController controller = ScteamController();
//스트림
Stream stream = controller.stream;
//listen 으로 듣고, 이벤트 발생시 처리
stream.listen((인자값){
발생시 할일 작성
});
....
//이벤트를 발생시킴
stream.add(인자값);
- 브로드캐스트 스트림
브로드캐스트 스트림의 경우, StreamController.broadcast() 를 이용한다.
StreamController<인자값 타입> controller = StreamController.broadcast();
Stream a_stream = controller.stream.where((변수) => 조건 A ));
Stream b_stream = controller.stream.where((변수) => 조건 B ));
a_stream.listen(() {
할일
} );
b_stream.listen(() {
할일
} );
controller.add(변수);
- Broadcast() 를 이용한 controller 를 생성하고, 각 조건에 맞는 stream을 controller 부터 가져온다 (조건식 추가)
- 각 Stream을 listen 한다
- controller.add 를 통해 각 Stream에 알람을 보낸다.
'Flutter' 카테고리의 다른 글
| Slivers, CustomScrollView (0) | 2023.03.14 |
|---|---|
| Builder (StreamBuilder, FutureBuilder) (0) | 2023.03.14 |
| 비동기, Future , Then (0) | 2023.03.07 |
| Stateful, Stateless 위젯 (0) | 2023.02.17 |
| Flutter 첫느낌, 그리고 위젯 (0) | 2023.02.14 |