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인자를 통해서 에 넘겨진 타입이 비동기로 처리되는 동안의 상태를 처리한다.
위치 업데이트, 음악 재생, 스톱워치 일부 데이터를 여러번 가져올때 사용
스트림은 데이터가 들어오고 나가는 통로다.데이터가 변하는 걸 보고 있다가 그에 맞춰 적절한 처리.. 필터링(where)이나 수정(map), 버퍼링(take)같은 일을 한다.
스트림 컨트롤러는 여러 리스너(구독&상태)을 관리한다.
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를 업데이트 할 수 있다.
또 항상 스트림의 최신값을 가져오니, 최신값을 확인할 필요가 없다.