Ich hätte gerne eine Listener-Methode, die nach Änderungen an einer Sammlung von Dokumenten sucht, wenn Änderungen auftreten.
Etwas wie:
import 'package:cloud_firestore/cloud_firestore.dart';
Future<Null> checkFocChanges() async {
Firestore.instance.runTransaction((Transaction tx) async {
CollectionReference reference = Firestore.instance.collection('planets');
reference.onSnapshot.listen((querySnapshot) {
querySnapshot.docChanges.forEach((change) {
// Do something with change
});
});
});
}
Der Fehler hier ist, dass onSnapshot
nicht auf definiert ist CollectionReference
.
Irgendwelche Ideen?
Lösung des Problems
Wenn Sie die cloud_firestore
Dokumentation durchlesen, können Sie sehen, dass a Stream
von a Query
über abgerufen werden kann snapshots()
.
Damit Sie es verstehen, werde ich Ihren Code nur ein kleines bisschen umwandeln:
CollectionReference reference = Firestore.instance.collection('planets');
reference.snapshots().listen((querySnapshot) {
querySnapshot.documentChanges.forEach((change) {
// Do something with change
});
});
Sie sollten dies auch nicht in einer Transaktion ausführen. Der Flutter-Weg, dies zu tun, verwendet eine StreamBuilder
, direkt von der cloud_firestore
Dart -Pub-Seite:
StreamBuilder<QuerySnapshot>(
stream: Firestore.instance.collection('books').snapshots(),
builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
if (!snapshot.hasData) return new Text('Loading...');
return new ListView(
children: snapshot.data.documents.map((DocumentSnapshot document) {
return new ListTile(
title: new Text(document['title']),
subtitle: new Text(document['author']),
);
}).toList(),
);
},
);
Wenn du mehr wissen willst, kannst du dir die Quelle anschauen, es ist gut dokumentiert, wo es nicht selbsterklärend ist.
Beachten Sie auch, dass ich zu geändert docChanges
habe documentChanges
. Das sieht man in der query_snapshot
Datei. Wenn Sie eine IDE wie IntelliJ oder Android Studio verwenden, ist es auch ziemlich einfach, sich durch die darin enthaltenen Dateien zu klicken.
Keine Kommentare:
Kommentar veröffentlichen