opt: 切换页面时销毁播放器组件提升性能
This commit is contained in:
@ -61,6 +61,7 @@ class _VideoDetailPageState extends State<VideoDetailPage>
|
|||||||
final Floating floating = Floating();
|
final Floating floating = Floating();
|
||||||
// 生命周期监听
|
// 生命周期监听
|
||||||
late final AppLifecycleListener _lifecycleListener;
|
late final AppLifecycleListener _lifecycleListener;
|
||||||
|
bool isShowing = true;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
@ -216,15 +217,15 @@ class _VideoDetailPageState extends State<VideoDetailPage>
|
|||||||
videoIntroController.isPaused = true;
|
videoIntroController.isPaused = true;
|
||||||
plPlayerController!.removeStatusLister(playerListener);
|
plPlayerController!.removeStatusLister(playerListener);
|
||||||
plPlayerController!.pause();
|
plPlayerController!.pause();
|
||||||
plPlayerController!.danmakuController?.pause();
|
|
||||||
plPlayerController!.danmakuController?.clear();
|
|
||||||
}
|
}
|
||||||
|
setState(() => isShowing = false);
|
||||||
super.didPushNext();
|
super.didPushNext();
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
// 返回当前页面时
|
// 返回当前页面时
|
||||||
void didPopNext() async {
|
void didPopNext() async {
|
||||||
|
setState(() => isShowing = true);
|
||||||
videoDetailController.isFirstTime = false;
|
videoDetailController.isFirstTime = false;
|
||||||
final bool autoplay = autoPlayEnable;
|
final bool autoplay = autoPlayEnable;
|
||||||
videoDetailController.playerInit(autoplay: autoplay);
|
videoDetailController.playerInit(autoplay: autoplay);
|
||||||
@ -354,6 +355,7 @@ class _VideoDetailPageState extends State<VideoDetailPage>
|
|||||||
boxConstraints.maxHeight;
|
boxConstraints.maxHeight;
|
||||||
return Stack(
|
return Stack(
|
||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
|
if (isShowing)
|
||||||
FutureBuilder(
|
FutureBuilder(
|
||||||
future: _futureBuilderFuture,
|
future: _futureBuilderFuture,
|
||||||
builder: (BuildContext context,
|
builder: (BuildContext context,
|
||||||
@ -363,7 +365,7 @@ class _VideoDetailPageState extends State<VideoDetailPage>
|
|||||||
return Obx(
|
return Obx(
|
||||||
() => !videoDetailController
|
() => !videoDetailController
|
||||||
.autoPlay.value
|
.autoPlay.value
|
||||||
? const SizedBox()
|
? nil
|
||||||
: PLVideoPlayer(
|
: PLVideoPlayer(
|
||||||
controller:
|
controller:
|
||||||
plPlayerController!,
|
plPlayerController!,
|
||||||
|
|||||||
Reference in New Issue
Block a user