add media notification handling for offline videos (#1748)

* feat: add media notification handling for offline videos

* update

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>

* update

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>

---------

Co-authored-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
JianGuo Wang
2025-11-17 17:35:00 +08:00
committed by GitHub
parent 377e430d74
commit ad931d7ea2
2 changed files with 22 additions and 0 deletions

View File

@@ -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);
}
}

View File

@@ -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()}");