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; // 第三态(有至少一个选中)
  }
}