markSelectedByIds method
O(N) 单次递归,通过判断整个 selectedIds 集合标记是否选中
Implementation
void markSelectedByIds(List<MultiSelectorEntity> nodes, List<String> ids) {
for (var node in nodes) {
node.isSelected = ids.contains(node.id);
if (node.children != null && node.children!.isNotEmpty) {
markSelectedByIds(node.children!, ids);
// 如果子节点中有一个选中,则父节点也应选中
if (node.children!.any((c) => c.isSelected)) {
node.isSelected = true;
}
}
}
}