mirror of
https://github.com/HChaZZY/PiliPlus.git
synced 2025-12-06 09:13:48 +08:00
fix: 分p或分集时字幕选择范围溢出;优先保持选择序号
This commit is contained in:
@@ -413,17 +413,27 @@ class PlPlayerController {
|
||||
if (videoType.value != 'live' && _cid != 0) {
|
||||
refreshSubtitles().then((value) {
|
||||
if (_vttSubtitles.isNotEmpty) {
|
||||
String preference = setting.get(SettingBoxKey.subtitlePreference,
|
||||
defaultValue: SubtitlePreference.values.first.code);
|
||||
if (preference == 'on') {
|
||||
setSubtitle(vttSubtitles[1]);
|
||||
} else if (preference == 'withoutAi') {
|
||||
for (int i = 1; i < _vttSubtitles.length; i++) {
|
||||
if (_vttSubtitles[i]['language']!.startsWith('ai')) {
|
||||
continue;
|
||||
if (_vttSubtitlesIndex > 0 &&
|
||||
_vttSubtitlesIndex < _vttSubtitles.length) {
|
||||
setSubtitle(_vttSubtitlesIndex.value);
|
||||
} else {
|
||||
String preference = setting.get(SettingBoxKey.subtitlePreference,
|
||||
defaultValue: SubtitlePreference.values.first.code);
|
||||
if (preference == 'on') {
|
||||
setSubtitle(1);
|
||||
} else if (preference == 'withoutAi') {
|
||||
bool found = false;
|
||||
for (int i = 1; i < _vttSubtitles.length; i++) {
|
||||
if (_vttSubtitles[i]['language']!.startsWith('ai')) {
|
||||
continue;
|
||||
}
|
||||
found = true;
|
||||
setSubtitle(i);
|
||||
break;
|
||||
}
|
||||
setSubtitle(vttSubtitles[i]);
|
||||
break;
|
||||
if (!found) _vttSubtitlesIndex.value = 0;
|
||||
} else {
|
||||
_vttSubtitlesIndex.value = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1220,17 +1230,17 @@ class PlPlayerController {
|
||||
}
|
||||
|
||||
// 设定字幕轨道
|
||||
setSubtitle(Map<String, String> s) {
|
||||
if (s['text'] == '') {
|
||||
setSubtitle(int index) {
|
||||
if (index == 0) {
|
||||
_videoPlayerController?.setSubtitleTrack(SubtitleTrack.no());
|
||||
_vttSubtitlesIndex.value = 0;
|
||||
return;
|
||||
}
|
||||
Map<String, String> s = _vttSubtitles[index];
|
||||
_videoPlayerController?.setSubtitleTrack(SubtitleTrack.data(
|
||||
s['text']!,
|
||||
title: s['title']!,
|
||||
language: s['language']!,
|
||||
));
|
||||
_vttSubtitlesIndex.value = _vttSubtitles.indexOf(s);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -374,18 +374,21 @@ class _PLVideoPlayerState extends State<PLVideoPlayer>
|
||||
: SizedBox(
|
||||
width: 42,
|
||||
height: 30,
|
||||
child: PopupMenuButton<Map<String, String>>(
|
||||
onSelected: (Map<String, String> value) {
|
||||
child: PopupMenuButton<int>(
|
||||
onSelected: (int value) {
|
||||
_.setSubtitle(value);
|
||||
},
|
||||
initialValue: _.vttSubtitles[_.vttSubtitlesIndex.value],
|
||||
initialValue:
|
||||
_.vttSubtitles.length < _.vttSubtitlesIndex.value
|
||||
? 0
|
||||
: _.vttSubtitlesIndex.value,
|
||||
color: Colors.black.withOpacity(0.8),
|
||||
itemBuilder: (BuildContext context) {
|
||||
return _.vttSubtitles.map((Map<String, String> subtitle) {
|
||||
return PopupMenuItem<Map<String, String>>(
|
||||
value: subtitle,
|
||||
return _.vttSubtitles.asMap().entries.map((entry) {
|
||||
return PopupMenuItem<int>(
|
||||
value: entry.key,
|
||||
child: Text(
|
||||
"${subtitle['title']}",
|
||||
"${entry.value['title']}",
|
||||
style: const TextStyle(color: Colors.white),
|
||||
),
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user