enterFullScreen method

Future<void> enterFullScreen(
  1. AliPlayerWidgetController controller,
  2. int currentPosition, {
  3. Map<SlotType, Function?>? slotBuilders,
  4. Map<SlotType, Set<String>>? hiddenSlotElements,
})

播放器横竖屏切换

controller 播放器控制器 currentPosition 当前播放位置 slotBuilders 插槽构建器映射,用于自定义插槽内容 hiddenSlotElements 隐藏插槽元素配置,用于在全屏模式下隐藏特定插槽内的UI元素 Key为插槽类型SlotType,Value为要隐藏的元素标识符集合

Implementation

Future<void> enterFullScreen(
  AliPlayerWidgetController controller,
  int currentPosition, {
  Map<SlotType, Function?>? slotBuilders,
  Map<SlotType, Set<String>>? hiddenSlotElements,
}) async {
  final data = controller._widgetData;
  if (data == null) return;
  data.startTime = currentPosition;

  // 进入全屏播放器
  AliPlayerWidgetData result = await Navigator.of(_context).push(
    PageRouteBuilder(
      transitionDuration: const Duration(milliseconds: 100), // 动画持续时间
      pageBuilder: (context, animation, secondaryAnimation) {
        return AliPlayerFullScreenWidget(
          controller,
          data,
          slotBuilders: slotBuilders ?? const {},
          hiddenSlotElements: hiddenSlotElements ?? const {},
        );
      },
      transitionsBuilder: (context, animation, secondaryAnimation, child) {
        // 淡入淡出动画
        return FadeTransition(
          opacity: animation,
          child: child,
        );
      },
    ),
  );
  final int fullScreenPosition = result.startTime;
  await _aliPlayer.seekTo(fullScreenPosition, result.seekMode);
  controller.play();
}