unsubscribe_ method

void unsubscribe_(
  1. dynamic path
)

Implementation

void unsubscribe_(path) {
  // tells the group to forget about a property path and no longer
  // update the array previously obtained with 'subscribe_'

  final indicesByPath = _bindingsIndicesByPath,
      index = indicesByPath[path];

  if (index != null) {
    final paths = _paths,
        parsedPaths = _parsedPaths,
        bindings = _bindings,
        lastBindingsIndex = bindings.length - 1,
        lastBindings = bindings[lastBindingsIndex],
        lastBindingsPath = path[lastBindingsIndex];

    indicesByPath[lastBindingsPath] = index;

    bindings[index] = lastBindings;
    bindings.removeLast();

    parsedPaths[index] = parsedPaths[lastBindingsIndex];
    parsedPaths.removeLast();

    paths[index] = paths[lastBindingsIndex];
    paths.removeLast();
  }
}