addChangeListener method
Adds a query change listener and posts changes to callback
.
Returns the listener token object for removing the listener.
Implementation
Future<ListenerToken> addChangeListener(ListenerCallback callback) async {
var token = ListenerToken();
tokens[token] =
_stream.where((data) => data["query"] == queryId).listen((data) {
Map<String, dynamic> qcJson = data;
final List<dynamic> resultList = qcJson["results"];
ResultSet result;
if (resultList != null) {
List<Result> results = List<Result>();
for (dynamic result in resultList) {
Result newResult = Result();
newResult.setMap(result["map"]);
newResult.setList(result["list"]);
results.add(newResult);
}
result = ResultSet(results);
}
String error = qcJson["error"];
callback(QueryChange(query: this, results: result, error: error));
});
if (tokens[token] == null) {
// Listener didn't subscribe to stream
tokens.remove(token);
return null;
}
return token;
}