opt: 字幕渲染逻辑

This commit is contained in:
guozhigq
2024-06-29 17:12:06 +08:00
parent 3c7189a260
commit 922b815ebd
6 changed files with 11 additions and 140 deletions

View File

@ -446,15 +446,6 @@ class VideoDetailController extends GetxController
}
}
// 获取字幕内容
// Future getSubtitleContent(String url) async {
// var res = await Request().get('https:$url');
// subtitleContents.value = res.data['body'].map<SubTitileContentModel>((e) {
// return SubTitileContentModel.fromJson(e);
// }).toList();
// setSubtitleContent();
// }
setSubtitleContent() {
plPlayerController.subtitleContent.value = '';
plPlayerController.subtitles.value = subtitles;

View File

@ -435,7 +435,8 @@ class VideoIntroController extends GetxController {
videoDetailCtr.danmakuCid.value = cid;
videoDetailCtr.cover.value = cover;
videoDetailCtr.queryVideoUrl();
videoDetailCtr.getSubtitle();
videoDetailCtr.clearSubtitleContent();
await videoDetailCtr.getSubtitle();
videoDetailCtr.setSubtitleContent();
// 重新请求评论
try {

View File

@ -426,7 +426,12 @@ class _HeaderControlState extends State<HeaderControl> {
/// 选择字幕
void showSubtitleDialog() async {
int tempThemeValue = widget.controller!.subTitleCode.value;
int len = widget.videoDetailCtr!.subtitles.length;
final List subtitles = widget.videoDetailCtr!.subtitles;
int len = subtitles.length;
if (subtitles.firstWhereOrNull((element) => element.id == tempThemeValue) ==
null) {
tempThemeValue = -1;
}
showDialog(
context: context,
builder: (BuildContext context) {
@ -458,7 +463,7 @@ class _HeaderControlState extends State<HeaderControl> {
),
...widget.videoDetailCtr!.subtitles
.map((e) => RadioListTile(
value: e.code,
value: e.id,
title: Text(e.title),
groupValue: tempThemeValue,
onChanged: (value) {