applyFilter static method
void
applyFilter({
- required FilteredList<
PlutoRow> rows, - required FilteredListFilter<
PlutoRow> ? filter,
Apply filter
condition to all groups in rows
.
Implementation
static void applyFilter({
required FilteredList<PlutoRow> rows,
required FilteredListFilter<PlutoRow>? filter,
}) {
if (rows.originalList.isEmpty) return;
isGroup(PlutoRow row) => row.type.isGroup;
if (filter == null) {
rows.setFilter(null);
final children = PlutoRowGroupHelper.iterateWithFilter(
rows.originalList,
filter: isGroup,
);
for (final child in children) {
child.type.group.children.setFilter(null);
}
} else {
isNotEmptyGroup(PlutoRow row) =>
row.type.isGroup &&
row.type.group.children.filterOrOriginalList.isNotEmpty;
filterOrHasChildren(PlutoRow row) => filter(row) || isNotEmptyGroup(row);
final children = PlutoRowGroupHelper.iterateWithFilter(
rows.originalList,
filter: isGroup,
);
for (final child in children.toList().reversed) {
child.type.group.children.setFilter(filterOrHasChildren);
}
rows.setFilter(filterOrHasChildren);
}
}