calculateGridFeedHeight static method
- {VideoFeedConfiguration? videoFeedConfiguration,
- required int rows,
- required int columns,
- required double width}
Calculate the grid feed height.
videoFeedConfiguration
is the configuration of the feed.
rows
is the number of the grid feed rows.
columns
is the number of the grid feed columns.
width
is the grid feed width.
Implementation
static double calculateGridFeedHeight({
VideoFeedConfiguration? videoFeedConfiguration,
required int rows,
required int columns,
required double width,
}) {
if (defaultTargetPlatform == TargetPlatform.iOS) {
final contentPadding = videoFeedConfiguration?.contentPadding ??
VideoFeedPadding(
top: 10,
right: 10,
bottom: 10,
left: 10,
);
final itemSpacing = videoFeedConfiguration?.itemSpacing ?? 10;
final aspectRatio = videoFeedConfiguration?.aspectRatio ?? (4 / 6);
final horizontalMargin =
(contentPadding.left ?? 10) + (contentPadding.right ?? 10);
final verticalMargin =
(contentPadding.top ?? 10) + (contentPadding.bottom ?? 10);
final totalHorizontalSpacing = (columns - 1) * itemSpacing;
final totalVerticalSpacing = (rows - 1) * itemSpacing;
final availableItemWidth =
width - (totalHorizontalSpacing + horizontalMargin);
final singleItemWidth = availableItemWidth / columns;
final singleItemHeight = singleItemWidth / aspectRatio;
final feedHeight =
singleItemHeight * rows + totalVerticalSpacing + verticalMargin;
return feedHeight.ceilToDouble();
} else {
final itemSpacing = videoFeedConfiguration?.itemSpacing ?? 8;
final contentPadding = VideoFeedPadding(
top: itemSpacing / 2,
right: itemSpacing / 2,
bottom: itemSpacing / 2,
left: itemSpacing / 2,
);
const aspectRatio = 9 / 16;
final horizontalMargin =
(contentPadding.left ?? 4) + (contentPadding.right ?? 4);
final verticalMargin =
(contentPadding.top ?? 4) + (contentPadding.bottom ?? 4);
final totalHorizontalSpacing = (columns - 1) * itemSpacing;
final totalVerticalSpacing = (rows - 1) * itemSpacing;
final availableItemWidth =
width - totalHorizontalSpacing - horizontalMargin;
final singleItemWidth = availableItemWidth / columns;
double singleItemHeight = 0;
if (videoFeedConfiguration?.titlePosition ==
VideoFeedTitlePosition.stacked) {
singleItemHeight = (singleItemWidth / aspectRatio) + 30;
} else {
singleItemHeight = singleItemWidth / aspectRatio;
}
final feedHeight =
singleItemHeight * rows + totalVerticalSpacing + verticalMargin;
return feedHeight.ceilToDouble();
}
}