buildOverlaysSlot static method

List<Widget> buildOverlaysSlot({
  1. required AliPlayerWidget widget,
  2. required Widget defaultBuilder(
    1. BuildContext context
    ),
  3. required BuildContext context,
  4. required AliPlayerWidgetController controller,
})

构建浮层插槽

Build overlays slot widgets

controller 播放器控制器,传递给 slotBuilder 以支持在全屏模式下正确控制播放器

支持两种 slotBuilder 签名以保持向后兼容:

  • Widget Function(BuildContext) - 旧版本(已废弃)
  • Widget Function(BuildContext, AliPlayerWidgetController) - 新版本(推荐)

Implementation

static List<Widget> buildOverlaysSlot({
  required AliPlayerWidget widget,
  required Widget Function(BuildContext context) defaultBuilder,
  required BuildContext context,
  required AliPlayerWidgetController controller,
}) {
  const slotType = SlotType.overlays;
  final slotBuilders = widget.slotBuilders;

  // 如果插槽构建器为null,则不显示该插槽
  if (slotBuilders.containsKey(slotType) && slotBuilders[slotType] == null) {
    return const <Widget>[];
  }

  // 如果插槽构建器不为null,则使用自定义构建器
  final slotBuilder = slotBuilders[slotType];
  if (slotBuilder != null) {
    return [_callSlotBuilder(slotBuilder, context, controller)];
  }

  // 回退到默认的overlays参数(向后兼容)
  return widget.overlays;
}