buildingUpdateAddFocusNode method
FocusNode
buildingUpdateAddFocusNode(
- NextFocusAction action,
- String focusName, {
- FocusNode? father,
- void override()?,
Implementation
FocusNode buildingUpdateAddFocusNode(NextFocusAction action, String focusName, {FocusNode? father, void Function(FocusNode building, FocusNode update)? override}){
/// 聚焦节点重用问题
final updateAddNode = (focusNodeReuseCacheMap[focusName] ?? FocusNode(name: focusName, father: father))..reset();
/// 用于焦点重置
if(updateAddNode.isFocused){
__buildingHasFocusNode = updateAddNode;
}
switch(action){
case NextFocusAction.right:
_buildingFocusNode.right = updateAddNode;
updateAddNode.left = _buildingFocusNode;
break;
case NextFocusAction.left:
_buildingFocusNode.left = updateAddNode;
updateAddNode.right = _buildingFocusNode;
break;
case NextFocusAction.down:
_buildingFocusNode.down = updateAddNode;
updateAddNode.up = _buildingFocusNode;
break;
case NextFocusAction.up:
_buildingFocusNode.up = updateAddNode;
updateAddNode.down = _buildingFocusNode;
break;
case NextFocusAction.enter:
_buildingFocusNode.enter = updateAddNode;
updateAddNode.father = _buildingFocusNode;
break;
case NextFocusAction.back:
_buildingFocusNode.father = updateAddNode;
updateAddNode.enter = _buildingFocusNode;
}
override?.call(_buildingFocusNode, updateAddNode);
focusNodeReuseCacheMap[focusName] = updateAddNode;
return __buildingFocusNode = updateAddNode;
}