calculateRenderSize static method
Size
calculateRenderSize(
- BuildContext context, {
- required Size videoSize,
- required bool isFullScreenMode,
计算视频的实际渲染尺寸和宽高比
Calculate the actual rendering size and aspect ratio of the video.
Implementation
static Size calculateRenderSize(
BuildContext context, {
required Size videoSize,
required bool isFullScreenMode,
}) {
// 获取当前方向和屏幕尺寸
final screenSize = MediaQuery.of(context).size;
// logi("calculateRenderSize: screenSize: $screenSize, videoSize: $videoSize");
// 如果视频尺寸为空或非法,则根据屏幕方向分配默认尺寸
if (videoSize == Size.zero ||
videoSize.width <= 0 ||
videoSize.height <= 0 ||
videoSize.aspectRatio <= 0) {
return screenSize;
}
// 竖屏视频(portrait video)
// TODO: 竖屏视频在全屏与非全屏模式下可能需要不同的布局策略,待后续需求明确后区分
if (videoSize.height > videoSize.width) {
return _calculatePortraitDimensions(screenSize, videoSize);
}
// 横屏视频(landscape video)
final aspectRatio = videoSize.aspectRatio;
return isFullScreenMode
? _calculateLandscapeFullScreenDimensions(screenSize, aspectRatio)
: _calculateLandscapeNonFullScreenDimensions(screenSize, aspectRatio);
}