// Author: fruit.com.cn import 'package:flutter/widgets.dart'; import 'package:video_player/video_player.dart'; import '../../../core/data/models/drama.dart'; import '../../../l10n/app_localizations.dart'; /// 播放浮层展示数据。 class PlayerOverlayData { /// 创建播放浮层数据。 const PlayerOverlayData({ required this.l10n, required this.drama, required this.episode, required this.controller, required this.liked, required this.likeCount, required this.commentCount, required this.favoriteCount, required this.saved, required this.playing, required this.playbackSpeed, required this.textScale, required this.totalEpisodes, this.authorNote = '', }); /// 当前语言包。 final AppLocalizations l10n; /// 当前短剧。 final Drama drama; /// 当前剧集。 final Episode episode; /// 当前播放器。 final VideoPlayerController? controller; /// 是否已点赞。 final bool liked; /// 点赞数;未知时隐藏。 final int? likeCount; /// 评论数;未知时隐藏。 final int? commentCount; /// 收藏数;未知时隐藏。 final int? favoriteCount; /// 是否已收藏。 final bool saved; /// 是否处于播放状态。 final bool playing; /// 当前倍速。 final double playbackSpeed; /// 信息文字缩放比例。 final double textScale; /// 可见集数量。 final int totalEpisodes; /// 作者声明;没有后端字段时为空。 final String authorNote; } /// 播放浮层动作集合。 class PlayerOverlayActions { /// 创建动作集合。 const PlayerOverlayActions({ required this.onBack, required this.onTogglePlay, required this.onClear, required this.onExitClear, required this.onDetail, required this.onSpeed, required this.onEpisodes, required this.onComments, required this.onLike, required this.onSave, required this.onShare, required this.onMore, required this.onScrubStart, required this.onSeek, this.onPip, }); /// 返回上一页。 final VoidCallback? onBack; /// 切换播放状态。 final VoidCallback onTogglePlay; /// 进入清屏。 final VoidCallback onClear; /// 退出清屏。 final VoidCallback onExitClear; /// 打开详情。 final VoidCallback onDetail; /// 打开顶部倍速入口。 final VoidCallback onSpeed; /// 打开选集。 final VoidCallback onEpisodes; /// 打开评论。 final VoidCallback onComments; /// 切换点赞。 final VoidCallback onLike; /// 切换收藏。 final VoidCallback onSave; /// 分享。 final VoidCallback onShare; /// 打开更多面板。 final VoidCallback onMore; /// 开始拖动进度。 final VoidCallback? onScrubStart; /// 提交进度跳转。 final Future Function(Duration)? onSeek; /// 进入小窗播放。 final VoidCallback? onPip; }