getComponentStats method

ComponentStateStats getComponentStats()

获取指定类型组件的展开状态统计

Implementation

ComponentStateStats getComponentStats() {
  if (!isBound) {
    return ComponentStateStats(
      totalComponents: 0,
      expandedComponents: 0,
      collapsedComponents: 0,
      floatingComponents: ComponentTypeStats(total: 0, expanded: 0, collapsed: 0),
      nonFloatingComponents: ComponentTypeStats(total: 0, expanded: 0, collapsed: 0),
    );
  }

  final allComponents = _state!.widget.config.components.entries
      .where((entry) => entry.value != null && entry.value!.isCollapsible)
      .toList();

  final floatingComponents = allComponents
      .where((entry) => entry.value!.isFloating)
      .toList();

  final nonFloatingComponents = allComponents
      .where((entry) => !entry.value!.isFloating)
      .toList();

  int expandedTotal = 0;
  int expandedFloating = 0;
  int expandedNonFloating = 0;

  for (final entry in allComponents) {
    final isExpanded = _state!.expandedStates[entry.key] ?? false;
    if (isExpanded) {
      expandedTotal++;
      if (entry.value!.isFloating) {
        expandedFloating++;
      } else {
        expandedNonFloating++;
      }
    }
  }

  return ComponentStateStats(
    totalComponents: allComponents.length,
    expandedComponents: expandedTotal,
    collapsedComponents: allComponents.length - expandedTotal,
    floatingComponents: ComponentTypeStats(
      total: floatingComponents.length,
      expanded: expandedFloating,
      collapsed: floatingComponents.length - expandedFloating,
    ),
    nonFloatingComponents: ComponentTypeStats(
      total: nonFloatingComponents.length,
      expanded: expandedNonFloating,
      collapsed: nonFloatingComponents.length - expandedNonFloating,
    ),
  );
}