diff --git a/lib/models/video/play/url.dart b/lib/models/video/play/url.dart index 7e049b02e..d0aae993a 100644 --- a/lib/models/video/play/url.dart +++ b/lib/models/video/play/url.dart @@ -118,22 +118,16 @@ class LanguageItem { this.lang, this.title, this.subtitleLang, - this.videoDetext, - this.videoMouthShapeChange, }); String? lang; String? title; String? subtitleLang; - bool? videoDetext; - bool? videoMouthShapeChange; LanguageItem.fromJson(Map json) { lang = json['lang']; - title = json['title']; + title = '${json['title']}${json['production_type'] == 2 ? '(AI)' : ''}'; subtitleLang = json['subtitle_lang']; - videoDetext = json['video_detext']; - videoMouthShapeChange = json['video_mouth_shape_change']; } } diff --git a/lib/pages/video/controller.dart b/lib/pages/video/controller.dart index 0df6cb8c2..edae20c08 100644 --- a/lib/pages/video/controller.dart +++ b/lib/pages/video/controller.dart @@ -1226,6 +1226,7 @@ class VideoDetailController extends GetxController final Rx?> languages = Rx?>(null); final Rx currLang = Rx(null); void setLanguage(String language) { + if (currLang.value == language) return; if (!isLoginVideo) { SmartDialog.showToast('账号未登录'); return; diff --git a/lib/pages/video/widgets/header_control.dart b/lib/pages/video/widgets/header_control.dart index 5bf8d67f6..b4d2c886b 100644 --- a/lib/pages/video/widgets/header_control.dart +++ b/lib/pages/video/widgets/header_control.dart @@ -324,7 +324,7 @@ class HeaderControlState extends State { leading: const Icon(Icons.hourglass_top_outlined, size: 20), title: const Text('定时关闭', style: titleStyle), ), - if (!isFileSource) + if (!isFileSource) ...[ ListTile( dense: true, onTap: () { @@ -337,7 +337,6 @@ class HeaderControlState extends State { ), title: const Text('播放地址', style: titleStyle), ), - if (!isFileSource) ListTile( dense: true, onTap: () { @@ -350,6 +349,7 @@ class HeaderControlState extends State { leading: const Icon(Icons.refresh_outlined, size: 20), title: const Text('重载视频', style: titleStyle), ), + ], ListTile( dense: true, leading: const Icon( diff --git a/lib/plugin/pl_player/view.dart b/lib/plugin/pl_player/view.dart index b897fdf90..aa8838771 100644 --- a/lib/plugin/pl_player/view.dart +++ b/lib/plugin/pl_player/view.dart @@ -608,27 +608,35 @@ class _PLVideoPlayerState extends State final list = videoDetailController.languages.value; if (list != null && list.isNotEmpty) { return PopupMenuButton( - tooltip: '原声翻译', + tooltip: '翻译', requestFocus: false, initialValue: videoDetailController.currLang.value, color: Colors.black.withValues(alpha: 0.8), itemBuilder: (context) { return [ PopupMenuItem( + height: 35, value: '', onTap: () => videoDetailController.setLanguage(''), child: const Text( "关闭翻译", - style: TextStyle(color: Colors.white), + style: TextStyle( + color: Colors.white, + fontSize: 13, + ), ), ), ...list.map((e) { return PopupMenuItem( + height: 35, value: e.lang, onTap: () => videoDetailController.setLanguage(e.lang!), child: Text( e.title!, - style: const TextStyle(color: Colors.white), + style: const TextStyle( + color: Colors.white, + fontSize: 13, + ), ), ); }), diff --git a/lib/services/download/download_manager.dart b/lib/services/download/download_manager.dart index 712dd38d4..e8327e121 100644 --- a/lib/services/download/download_manager.dart +++ b/lib/services/download/download_manager.dart @@ -93,8 +93,7 @@ class DownloadManager { _status = DownloadStatus.completed; onTaskComplete(); } - closeAndDelete(delete: isFailed); - _complete(); + closeAndDelete(delete: isFailed).whenComplete(_complete); return; } diff --git a/pubspec.lock b/pubspec.lock index ecfbb9947..1a75aa16e 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -174,10 +174,10 @@ packages: dependency: "direct dev" description: name: build_runner - sha256: a9461b8e586bf018dd4afd2e13b49b08c6a844a4b226c8d1d10f3a723cdd78c3 + sha256: "04f69b1502f66e22ae7990bbd01eb552b7f12793c4d3ea6e715d0ac5e98bcdac" url: "https://pub.dev" source: hosted - version: "2.10.1" + version: "2.10.2" built_collection: dependency: transitive description: