본문 바로가기

Flutter

Flutter - StreamBuilder 데이터 변경시 화면 다시 그리기

728x90

원하는 동작

목록에서 아이템을 클릭하면 해당 아이템의 정보를 가지고 Detail 페이지로 넘어간다.

처음에는 타이틀 등 정보를 String값으로 담아서 화면 전환을 시켰다.

보이고자하는 요소들은 다 보여줄 수 있었지만 버튼 사용이 불가능했다. 

이전 페이지와 동일한 동작이 필요했다.

 

 

처음 시도

그 다음에는 내가 필요한 객체를 넘겼다. 버튼 사용시 동작하는 함수도 전역으로 옮겼다.

버튼 사용이 가능은 했는데 결과를 화면에 바로 반영할 수 없었다.

 

 

문제

이전 화면에서는 버튼을 클릭하면 바로 그에 맞게 화면이 바뀐다. 하지만 detail에서는 그렇지 않다.

이유는 StreamBuilder를 사용하지 않았기 때문이다.

stream에 firebase의 db document의 값을 연결해두는 것이다. 목록 화면에서는 QuerySnapshot를 사용해서 문서 전체를 읽어와 list형태로 반환했지만 여기서는 문서 하나만을 필요로 하기 때문에 DocumentSnapshot으로 바꿔주었더니 성공적으로 동작했다.