buildSlot static method

Widget buildSlot({
  1. required AliPlayerWidget widget,
  2. required SlotType slotType,
  3. required Widget defaultBuilder(
    1. BuildContext context
    ),
  4. required BuildContext context,
  5. required AliPlayerWidgetController controller,
})

构建插槽或默认组件

Build slot widget or default widget

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

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

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

Implementation

static Widget buildSlot({
  required AliPlayerWidget widget,
  required SlotType slotType,
  required Widget Function(BuildContext context) defaultBuilder,
  required BuildContext context,
  required AliPlayerWidgetController controller,
}) {
  final slotBuilders = widget.slotBuilders;

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

  // 如果插槽构建器不为null,则使用自定义构建器,否则使用默认构建器
  final slotBuilder = slotBuilders[slotType];
  if (slotBuilder != null) {
    // 检测函数签名以支持向后兼容
    // 支持旧版 SlotWidgetBuilder (单参数) 和新版 SlotWidgetBuilderWithController (双参数)
    return _callSlotBuilder(slotBuilder, context, controller);
  }
  return defaultBuilder(context);
}