getComponentStats method
获取指定类型组件的展开状态统计
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,
),
);
}