getAllSelectableNodes method

List<T> getAllSelectableNodes()

获取所有可选择的节点

Implementation

List<T> getAllSelectableNodes() {
  final List<T> result = [];

  void traverse(List<T> nodes) {
    for (final node in nodes) {
      final enabled =
          widget.disabledWhen == null ? true : !widget.disabledWhen!(node);
      if (enabled) {
        final children = getChildren(node) ?? [];
        if (children.isEmpty || parentCheckable) {
          result.add(node);
        }
        if (children.isNotEmpty) {
          traverse(children);
        }
      }
    }
  }

  traverse(widget.source);
  return result;
}