calculateRenderSize static method

Size calculateRenderSize(
  1. BuildContext context, {
  2. required Size videoSize,
  3. 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;
  }

  // 处理竖屏视频的情况下,调整逻辑
  if (videoSize.height > videoSize.width) {
    return isFullScreenMode
        ? _calculateVerticalFullScreenDimensions(screenSize, videoSize)
        : _calculateVerticalNonFullScreenDimensions(screenSize, videoSize);
  }

  // 计算视频的宽高比
  final aspectRatio = videoSize.aspectRatio;
  // 根据模式选择全屏或非全屏计算逻辑
  return isFullScreenMode
      ? _calculateFullScreenDimensions(screenSize, aspectRatio)
      : _calculateNonFullScreenDimensions(screenSize, aspectRatio);
}