selectState property
bool?
get
selectState
获取复选框状态(支持三态)
Implementation
bool? get selectState {
if (children.isEmpty) {
return isSelected;
}
int selectedCount = 0;
int totalCount = 0;
bool hasIndeterminate = false;
for (var child in children) {
if (!child.selectable) continue; // 跳过不可选中的节点
final childState = child.selectState;
totalCount++;
if (childState == true) {
selectedCount++;
} else if (childState == null) {
hasIndeterminate = true;
}
}
if (totalCount == 0) {
return false; // 没有可选中的子节点
}
if (selectedCount == totalCount) {
return true; // 全选
} else if (selectedCount == 0 && !hasIndeterminate) {
return false; // 全不选
} else {
return null; // 第三态(有至少一个选中)
}
}