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