didUpdateWidget method
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();
}
}