didUpdateWidget method

  1. @override
void didUpdateWidget(
  1. covariant Focus oldWidget
)
override

Called whenever the widget configuration changes.

Implementation

@override
void didUpdateWidget(Focus oldWidget) {
  super.didUpdateWidget(oldWidget);
  if (Zone.current[#isMeasuringIntrinsics] == true) return;
  if (widget.focusNode != oldWidget.focusNode) {
    final hadPrimaryFocus = FocusManager.instance.primaryFocus == _focusNode;
    if (oldWidget.focusNode == null) {
      _focusNode.dispose();
    } else if (_attachedParent != null &&
        _focusNode.parent == _attachedParent) {
      _attachedParent!.removeChild(_focusNode);
    } else if (_focusNode.hasFocus) {
      _focusNode.unfocus();
    }
    _attachedParent = null;
    _focusNode = widget.focusNode ?? createFocusNode();
    _updateNodeProperties();
    final parentScope = Focus.of(context);
    if (parentScope != null) {
      parentScope.addChild(_focusNode);
      _attachedParent = parentScope;
    }
    if (hadPrimaryFocus) {
      _focusNode.requestFocus();
    }
  } else {
    _updateNodeProperties();
  }
}