해결된 질문
작성
·
2.5K
0
안녕하세요 강사님 강의잘듣고있습니다!
질문있어 글남기게 되었습니다
강의에서는
Widget _buildBody() {
return SafeArea(
child: StreamBuilder<QuerySnapshot>(
이렇게 하였지만 querySnapshot대신 1) documentSnapshot을 넣으면 왜 오류가 뜨는지 질문드리고싶습니다. 현재 제가 documentSnapshot과 querySnapshot 구분이 안되는거 같습니다.2)두개의 차이점이 무엇인지 여쭤보고 싶습니다 print문을 넣어서 차이점을 확실하고싶은데 두개 다 아래처럼나와 명확히 구분이 안되네요..
[Instance of 'DocumentSnapshot', Instance of 'DocumentSnapshot', Instance of 'DocumentSnapshot']
또 저위 코드에서 <QuerySnapshot>으로 데이터를 받았는데 _buildHasPostBody()에서 데이터를 받을때 List<DocumentSnapshot> documents
처럼 documentSnapshot으로 3) 왜 다른 데이터 형식으로 받는지도 궁금합니다
답변 2
1
StreamBuilder의 stream 으로 어떤 걸 지정했는지에 따라 타입이 달라집니다.
firestore의 collection 은 QuerySnapshot 이라는 걸 리턴하고요. 이 객체에 대해서는
javascript용 문서지만 거의 비슷하니까 참고하시면 이해하시는데 도움이 되실 겁니다.
https://firebase.google.com/docs/reference/js/firebase.firestore.QuerySnapshot
문서에서는 이 객체의 docs 를 forEach 등으로 반복하며 문서들을 꺼낼 수 있다고 되어 있는데, 플러터에서는 docs 대신 data를 씁니다.
즉 collection 스트림에서 QuerySnapshot 을 얻으면 컬렉션 정보가 다 들어있는데 여기서 data 에는 컬렉션에 포함된 모든 문서 정보가 DocumentSnapshot 형태로 들어있습니다.
이 정보를 토대로 UI를 그리기 위해서 _buildHasPostBody()에 DocumentSnapshot을 그대로 전달하고 이 객체에서 원하는 값들을 활용하여 UI를 그리는 것입니다.
0