Files
ReelShort/lib/pages/player/widgets/player_overlay_models.dart
T

130 lines
2.7 KiB
Dart

// 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.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 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,
});
/// 返回上一页。
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<void> Function(Duration)? onSeek;
}