fix: 重回前台弹幕堆积
This commit is contained in:
@ -38,7 +38,7 @@ class VideoDetailPage extends StatefulWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class _VideoDetailPageState extends State<VideoDetailPage>
|
class _VideoDetailPageState extends State<VideoDetailPage>
|
||||||
with TickerProviderStateMixin, RouteAware {
|
with TickerProviderStateMixin, RouteAware, WidgetsBindingObserver {
|
||||||
late VideoDetailController vdCtr;
|
late VideoDetailController vdCtr;
|
||||||
PlPlayerController? plPlayerController;
|
PlPlayerController? plPlayerController;
|
||||||
final ScrollController _extendNestCtr = ScrollController();
|
final ScrollController _extendNestCtr = ScrollController();
|
||||||
@ -61,6 +61,8 @@ class _VideoDetailPageState extends State<VideoDetailPage>
|
|||||||
late bool autoPiP;
|
late bool autoPiP;
|
||||||
late Floating floating;
|
late Floating floating;
|
||||||
bool isShowing = true;
|
bool isShowing = true;
|
||||||
|
// 生命周期监听
|
||||||
|
late final AppLifecycleListener _lifecycleListener;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
@ -96,6 +98,8 @@ class _VideoDetailPageState extends State<VideoDetailPage>
|
|||||||
floating = vdCtr.floating!;
|
floating = vdCtr.floating!;
|
||||||
autoEnterPip();
|
autoEnterPip();
|
||||||
}
|
}
|
||||||
|
WidgetsBinding.instance.addObserver(this);
|
||||||
|
lifecycleListener();
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取视频资源,初始化播放器
|
// 获取视频资源,初始化播放器
|
||||||
@ -219,6 +223,8 @@ class _VideoDetailPageState extends State<VideoDetailPage>
|
|||||||
floating.dispose();
|
floating.dispose();
|
||||||
}
|
}
|
||||||
appbarStream.close();
|
appbarStream.close();
|
||||||
|
WidgetsBinding.instance.removeObserver(this);
|
||||||
|
_lifecycleListener.dispose();
|
||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -281,6 +287,29 @@ class _VideoDetailPageState extends State<VideoDetailPage>
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 生命周期监听
|
||||||
|
void lifecycleListener() {
|
||||||
|
_lifecycleListener = AppLifecycleListener(
|
||||||
|
// onResume: () => _handleTransition('resume'),
|
||||||
|
// 后台
|
||||||
|
// onInactive: () => _handleTransition('inactive'),
|
||||||
|
// 在Android和iOS端不生效
|
||||||
|
// onHide: () => _handleTransition('hide'),
|
||||||
|
onShow: () => _handleTransition('show'),
|
||||||
|
onPause: () => _handleTransition('pause'),
|
||||||
|
onRestart: () => _handleTransition('restart'),
|
||||||
|
onDetach: () => _handleTransition('detach'),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
void _handleTransition(String name) {
|
||||||
|
switch (name) {
|
||||||
|
case 'show' || 'restart':
|
||||||
|
plPlayerController?.danmakuController?.clear();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final sizeContext = MediaQuery.sizeOf(context);
|
final sizeContext = MediaQuery.sizeOf(context);
|
||||||
|
|||||||
Reference in New Issue
Block a user