1. 한번 가져오기
1-1 커스텀 객체로 불러오기
1-2 리스트로 된 커스텀 객체로 불러오기
1.
Future<List<커스텀클래스>> 를 리턴하는 async 함수 정의
2.
위젯에서 해당 메서드 호출하기
a.
initState() {} 에서 위젯 초기화와 함께 호출 및 데이터 세팅
b.
setState() 와 함께 호출하기
2. 리스너 만들기
2-1.
1.
static 메서드로 Stream<QuerySnapshot<Map<String, dynamic>>> 를 리턴하는 함수를 만들어준다.
class FirestoreService {
static Stream<QuerySnapshot<Map<String, dynamic>>> getStream() {
print("DEBUG: stream Entries");
return entryDB
.orderBy('enrolledAt')
.where("eventID", isEqualTo: "123456")
.snapshots();
}
}
Dart
복사
2.
위에서 만든 Stream 타입을 리턴하는 함수를 StreamBuilder 위젯을 만드는 과정에서 호출해준다.
StreamBuilder<QuerySnapshot>(
stream: FirestoreService.getStream(),
builder: (context, snapshot) {
if (snapshot.hasError) {
print("ERROR: ${snapshot.error}");
return Center(
child: Text('불러올 수 없습니다.'),
);
}
if (snapshot.connectionState == ConnectionState.waiting) {
return Center(
child: CircularProgressIndicator(color: Colors.black),
);
}
List<DocumentSnapshot> documents = snapshot.data!.docs;
return ...
);
})),
Dart
복사