mod: 视频单例模式

This commit is contained in:
guozhigq
2023-08-08 16:38:36 +08:00
parent d46cff80e1
commit add1e6e2eb
4 changed files with 85 additions and 51 deletions

View File

@ -49,8 +49,25 @@ class _VideoDetailPageState extends State<VideoDetailPage>
void initState() {
super.initState();
plPlayerController = videoDetailController.plPlayerController;
playerListener();
appbarStream = StreamController<double>();
_extendNestCtr.addListener(
() {
double offset = _extendNestCtr.position.pixels;
appbarStream.add(offset);
},
);
statusBarHeight = localCache.get('statusBarHeight');
_futureBuilderFuture = videoDetailController.queryVideoUrl();
}
// 播放器状态监听
void playerListener() {
plPlayerController!.onPlayerStatusChanged.listen(
(PlayerStatus status) {
(PlayerStatus status) async {
videoDetailController.markHeartBeat();
playerStatus = status;
if (status == PlayerStatus.playing) {
@ -68,18 +85,6 @@ class _VideoDetailPageState extends State<VideoDetailPage>
}
},
);
appbarStream = StreamController<double>();
_extendNestCtr.addListener(
() {
double offset = _extendNestCtr.position.pixels;
appbarStream.add(offset);
},
);
statusBarHeight = localCache.get('statusBarHeight');
_futureBuilderFuture = videoDetailController.queryVideoUrl();
}
// 继续播放或重新播放
@ -104,6 +109,7 @@ class _VideoDetailPageState extends State<VideoDetailPage>
if (videoDetailController.timer!.isActive) {
videoDetailController.timer!.cancel();
}
videoDetailController.defaultST = plPlayerController!.position.value;
plPlayerController!.pause();
super.didPushNext();
}
@ -111,6 +117,7 @@ class _VideoDetailPageState extends State<VideoDetailPage>
@override
// 返回当前页面时
void didPopNext() async {
videoDetailController.playerInit();
if (_extendNestCtr.position.pixels == 0) {
await Future.delayed(const Duration(milliseconds: 300));
plPlayerController!.play();