diff --git a/lib/pages/video/introduction/local/controller.dart b/lib/pages/video/introduction/local/controller.dart index 0bf4f8040..c963cc8f5 100644 --- a/lib/pages/video/introduction/local/controller.dart +++ b/lib/pages/video/introduction/local/controller.dart @@ -3,6 +3,8 @@ import 'package:PiliPlus/models_new/video/video_detail/stat_detail.dart'; import 'package:PiliPlus/pages/common/common_intro_controller.dart'; import 'package:PiliPlus/pages/download/controller.dart'; import 'package:PiliPlus/plugin/pl_player/models/play_repeat.dart'; +import 'package:PiliPlus/services/service_locator.dart'; +import 'package:PiliPlus/utils/utils.dart'; import 'package:extended_nested_scroll_view/extended_nested_scroll_view.dart'; import 'package:flutter/foundation.dart' show kDebugMode; import 'package:flutter/scheduler.dart' show SchedulerBinding; @@ -41,6 +43,7 @@ class LocalIntroController extends CommonIntroController { @override void onClose() { aidSet.clear(); + videoPlayerServiceHandler?.onVideoDetailDispose(heroTag); super.onClose(); } @@ -62,6 +65,9 @@ class LocalIntroController extends CommonIntroController { final currCid = videoDetailCtr.cid.value; final index = list.indexWhere((e) => e.cid == currCid); this.index.value = index; + if (Utils.isMobile) { + onVideoDetailChange(list[index]); + } if (index != 0) { SchedulerBinding.instance.addPostFrameCallback((_) { try { @@ -135,5 +141,12 @@ class LocalIntroController extends CommonIntroController { ..value.title = entry.showTitle ..refresh(); this.index.value = index; + if (Utils.isMobile) { + onVideoDetailChange(entry); + } + } + + void onVideoDetailChange(BiliDownloadEntryInfo entry) { + videoPlayerServiceHandler?.onVideoDetailChange(entry, entry.cid, heroTag); } } diff --git a/lib/services/audio_handler.dart b/lib/services/audio_handler.dart index e1ea9ff0d..ac4dade99 100644 --- a/lib/services/audio_handler.dart +++ b/lib/services/audio_handler.dart @@ -1,5 +1,6 @@ import 'package:PiliPlus/common/constants.dart'; import 'package:PiliPlus/grpc/bilibili/app/listener/v1.pb.dart' show DetailItem; +import 'package:PiliPlus/models_new/download/bili_download_entry_info.dart'; import 'package:PiliPlus/models_new/live/live_room_info_h5/data.dart'; import 'package:PiliPlus/models_new/pgc/pgc_info_model/episode.dart'; import 'package:PiliPlus/models_new/video/video_detail/data.dart'; @@ -193,6 +194,14 @@ class VideoPlayerServiceHandler extends BaseAudioHandler with SeekHandler { duration: Duration(seconds: data.arc.duration.toInt()), artUri: Uri.parse(data.arc.cover), ); + } else if (data is BiliDownloadEntryInfo) { + mediaItem = MediaItem( + id: id, + title: data.showTitle, + artist: data.ownerName, + duration: Duration(milliseconds: data.totalTimeMilli), + artUri: Uri.parse(data.cover), + ); } if (mediaItem == null) return; // if (kDebugMode) debugPrint("exist: ${PlPlayerController.instanceExists()}");