insert method

void insert(
  1. N targetNode,
  2. N newNode, {
  3. bool isBefore = false,
})

在目标节点插入新的节点:

  • targetNode 目标节点
  • newNode 插入的新节点,如果已关联,则执行移动操作
  • isBefore 是否将新节点将插入到前面

Implementation

void insert(N targetNode, N newNode, {bool isBefore = false}) {
  if (isBefore) {
    newNode.mount(this, targetNode.prev, targetNode);
    if (targetNode.prev != null) targetNode.prev!._next = newNode;
    targetNode._prev = newNode;
    if (newNode.prev == null) _first = newNode;
  } else {
    newNode.mount(this, targetNode, targetNode.next);
    if (targetNode.next != null) targetNode.next!._prev = newNode;
    targetNode._next = newNode;
    if (newNode.next == null) _last = newNode;
  }
}