Я думаю, это то, что вы спрашиваете. Если вы подписываетесь на Stream
и получаете обратно Stream
из QuerySnapshots
, вы можете либо перезагрузить всю базу данных каждый раз, когда новый документ добавляется или изменяется, либо просто получать новые документы.
//Just gets new documents
StreamBuilder<QuerySnapshot>(
stream: Firestore.instance.collection(//Collection).snapshots(),
builder: (BuildContext context,
AsyncSnapshot<QuerySnapshot> asyncSnapshot) {
if (asyncSnapshot.hasData) {
//This is the difference
List<DocumentChange> snapshot =
asyncSnapshot.data.documentChanges;
snapshot.forEach((DocumentChange change) {}
//Get all documents
StreamBuilder<QuerySnapshot>(
stream: Firestore.instance.collection('Test').snapshots(),
builder: (BuildContext context,
AsyncSnapshot<QuerySnapshot> asyncSnapshot) {
if (asyncSnapshot.hasData) {
//This is the difference
List<DocumentSnapshot> snapshot =
asyncSnapshot.data.documents;
snapshot.forEach((DocumentSnapshot snapshot) {
DocumentChange
Массив документов, которые изменились с момента последнего снимка. Если это первый снимок, все документы будут в списке как добавленные изменения.
DocumentSnapshot
Получает список всех документов при каждом добавлении или изменении нового документа.
Имейте в виду, как @Doug Stevenson сказал, что вы платите за каждый добавленный или измененный документ.