- @override
Gets an existing node.
Source
@override
LocalNode getNode(String path, {Completer<CallbackNode> onLoaded, bool forceHandle: false}) {
LocalNode node = super.getNode(path);
if (path != "/" && node != null && !forceHandle) {
if (onLoaded != null && !onLoaded.isCompleted) {
onLoaded.complete(node);
}
return node;
}
if (handler == null) {
if (onLoaded != null && !onLoaded.isCompleted) {
onLoaded.complete(null);
}
return null;
}
Completer c = new Completer();
CallbackNode n = new CallbackNode(path, provider: this);
n.onLoadedCompleter = c;
bool isListReady = false;
n.isListReady = () => isListReady;
handler(n).then((m) {
if (!m) {
isListReady = true;
String ts = ValueUpdate.getTs();
n.getDisconnectedStatus = () => ts;
n.listChangeController.add(r"$is");
if (onLoaded != null && !onLoaded.isCompleted) {
onLoaded.complete(n);
}
if (c != null && !c.isCompleted) {
c.complete();
}
return;
}
isListReady = true;
n.listChangeController.add(r"$is");
if (onLoaded != null && !onLoaded.isCompleted) {
onLoaded.complete(n);
}
if (c != null && !c.isCompleted) {
c.complete();
}
}).catchError((e, stack) {
isListReady = true;
String ts = ValueUpdate.getTs();
n.getDisconnectedStatus = () => ts;
n.listChangeController.add(r"$is");
if (c != null && !c.isCompleted) {
c.completeError(e, stack);
}
});
return n;
}