Streambuilder, Futurebuilder

김은상·2022년 8월 2일
0
post-thumbnail

FutureBuilder

  • 앨범에서 이미지 가져오기, 배터리 표시, 파일 가져오기, http요청등 일회성 응답에 사용
FutureBuilder<SharedPreferences>( 
        future: SharedPreference.getInstance(), 
        builder: (BuildContext context, AsyncSnapshot<SharedPreferences> snapshot) { 
        	String result; 
           	if (snapshot.hasData == false) { 
             	result = "Loading..."; 
            } 
            else if (snapshot.data.getString("sessionKey")) { 
              	result = "You has session key."; 
            } else {
            	result = "You has not session key."; 
            }
            return Center( child: Text(result); ); 
		} 
) 

Async/await 키워드를 사용하여 비동기를 처리하는 것을 직관적으로 코드를 작성할 수 있다. FutureBuilder에서 는 비동기로 처리할 타입이 된다. builder에서는 AsyncSnapshot인자를 통해서 에 넘겨진 타입이 비동기로 처리되는 동안의 상태를 처리한다.


StreamBuilder

위치 업데이트, 음악 재생, 스톱워치 일부 데이터를 여러번 가져올때 사용

Stream?

스트림은 데이터가 들어오고 나가는 통로다.데이터가 변하는 걸 보고 있다가 그에 맞춰 적절한 처리.. 필터링(where)이나 수정(map), 버퍼링(take)같은 일을 한다.

StreamController?

스트림 컨트롤러는 여러 리스너(구독&상태)을 관리한다.

  • 아래의 예제는 값이 추가 될때마다 출력하는 소스이다.

void main() {
  StreamController ctrl = StreamController();

  ctrl.stream.listen((data) {
    print(data);
  });

  ctrl.add(1);
  ctrl.add("Hello Stream");
  ctrl.add({"first": 10, "tow": "20"});

  ctrl.close();
}

플러터에서는 스트림 빌더(StreamBuilder)를 써서 스트림 처리를 한다.
스트림 빌더를 쓰면 setState() 를 쓰지 않고도 UI를 업데이트 할 수 있다.
또 항상 스트림의 최신값을 가져오니, 최신값을 확인할 필요가 없다.

profile
Flutter 시작

0개의 댓글