본문 바로가기

Flutter/00 Legacy

[Flutter] StreamBuilder with FirebaseFirestore

StreamBuilder 로 Firebase의 collection 데이터를 연결하는 샘플코드

 

/* 플러그인 정보 */

firebase_core: ^0.7.0
firebase_storage: ^7.0.0
cloud_firestore: ^0.16.0

 

Widget _buildBody() {

  return WillPopScope(
    child: StreamBuilder(
      stream: FirebaseFirestore.instance
        .collection('post')
        .doc(docID)
        .collection('post_sub')
        .orderBy('datetime')
        .snapshots(),
      builder: (BuildContext context, AsyncSnapshot snapshot) {
        if (!snapshot.hasData) {
          return Center(child: CircularProgressIndicator());
        }
        if (snapshot.data != null && !snapshot.hasError) {
          // ??은 snapshot.data.docs 가 널인경우를 대비한 안전코드,
		  // if null, var items = []
          var items = snapshot.data.docs ?? [];

          if (items.length < 1) {
            return Text(_multiMsg.strNoData);
          }

          return _buildCarouselSlider(items);
        }

        return Text(_multiMsg.strNoList);
      },

    ),
    onWillPop: () {
    // 수동 back 버튼에서 특별한 처리가 필요한경우 여기서 처리하면 됨.
      Navigator.of(context).pop(true);
      return Future.value(true);
    },
  );
}