buildSlot static method
Widget
buildSlot({
- required AliPlayerWidget widget,
- required SlotType slotType,
- required Widget defaultBuilder(
- BuildContext context
- required BuildContext context,
- 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);
}