dispose method

void dispose()

Disposes of the focus node, detaching it from the tree.

Implementation

void dispose() {
  if (hasFocus) {
    FocusNode? nextTarget = parent;
    if (parent != null) {
      final siblings = parent!.children.where((c) => c != this).toList();
      if (siblings.isNotEmpty) {
        nextTarget = siblings.first;
      }
    }
    FocusManager.instance.setPrimaryFocus(nextTarget);
  }
  final p = parent;
  if (p != null) {
    p.children.remove(this);
    if (p is FocusScopeNode && p._focusedChild == this) {
      p._focusedChild = p.children.isNotEmpty ? p.children.first : null;
    }
    parent = null;
  }
}