validationErrors method
Validates structural invariants and returns one or more descriptive errors.
Implementation
List<String> validationErrors() {
final errors = <String>[];
final paneIdList = _collectPaneIds(root);
final paneIdSet = paneIdList.toSet();
if (paneIdList.isEmpty) {
errors.add('root must contain at least one pane');
}
if (paneIdList.length != paneIdSet.length) {
errors.add('pane ids must be unique');
}
final splitIds = _collectSplitIds(root);
final splitIdSet = splitIds.toSet();
if (splitIds.length != _countSplits(root)) {
errors.add('split ids must be unique');
}
if (splitIds.length != splitIdSet.length) {
errors.add('split ids must be unique');
}
if (paneMinWidth < 1 || paneMinHeight < 1) {
errors.add('pane minimums must be >=1');
}
if (root is PaneSplit) {
if (!_validateSplitNode(root as PaneSplit, errors)) {
errors.add('split ratios must be finite within (0, 1)');
}
} else if (root is PaneLeaf && !paneIdSet.contains(focusedPaneId)) {
errors.add('focusedPaneId must exist in tree');
}
if (!paneIdSet.contains(focusedPaneId)) {
errors.add('focusedPaneId must exist in tree');
}
return errors;
}