indexToNode method

T indexToNode (
  1. int index
)

Returns the node underlying the list view item at position index.

Implementation

T indexToNode(int index) {
  if (includeRoot) {
    if (index == 0) return root;
    index--;
  }
  var node = _cachedNode(index);
  if (node != null) return node;
  var i = index, j = index;
  bool next;
  do {
    next = false;
    if (--i >= _offset) {
      next = true;
      node = _cachedNode(i);
      if (node != null) {
        _iterateForward(node, i, index);
        node = _cachedNode(index);
        assert(node != null);
        return node;
      }
    }
    if (++j < _endOffset) {
      next = true;
      node = _cachedNode(j);
      if (node != null) {
        _iterateBackward(node, j, index);
        node = _cachedNode(index);
        assert(node != null);
        return node;
      }
    }
  } while (next);
  _iterateForward(root, -1, index);
  node = _cachedNode(index);
  assert(node != null);
  return node;
}