update method
Call the setItemSize callback while traversing the items list.
Implementation
@override
void update() {
final length = items.length;
double eachSize = maxSize / length;
bool isSuppressed(T e) {
return isSuppressedItem(e) || eachSize < getItemMinSize(e);
}
final suppressedItems = items.where(isSuppressed);
if (suppressedItems.isNotEmpty) {
final totalSuppressedSize = suppressedItems.fold<double>(0, (p, e) {
return p + (isSuppressedItem(e) ? getItemSize(e) : getItemMinSize(e));
});
eachSize =
(maxSize - totalSuppressedSize) / (length - suppressedItems.length);
}
for (final item in items) {
if (isSuppressedItem(item)) continue;
setItemSize(item, max(eachSize, getItemMinSize(item)));
}
}