diff --git a/lib/common/widgets/app_bar_ani.dart b/lib/common/widgets/app_bar_ani.dart deleted file mode 100644 index 4fea635c..00000000 --- a/lib/common/widgets/app_bar_ani.dart +++ /dev/null @@ -1,57 +0,0 @@ -import 'package:flutter/material.dart'; - -class AppBarAni extends StatelessWidget implements PreferredSizeWidget { - const AppBarAni({ - required this.child, - required this.controller, - required this.visible, - this.position, - Key? key, - }) : super(key: key); - - final PreferredSizeWidget child; - final AnimationController controller; - final bool visible; - final String? position; - - @override - Size get preferredSize => child.preferredSize; - - @override - Widget build(BuildContext context) { - visible ? controller.reverse() : controller.forward(); - return SlideTransition( - position: Tween( - begin: Offset.zero, - end: Offset(0, position! == 'top' ? -1 : 1), - ).animate(CurvedAnimation( - parent: controller, - curve: Curves.easeInOut, - )), - child: Container( - decoration: BoxDecoration( - gradient: position! == 'top' - ? const LinearGradient( - begin: Alignment.bottomCenter, - end: Alignment.topCenter, - colors: [ - Colors.transparent, - Colors.black45, - ], - tileMode: TileMode.clamp, - ) - : const LinearGradient( - begin: Alignment.topCenter, - end: Alignment.bottomCenter, - colors: [ - Colors.transparent, - Colors.black45, - ], - tileMode: TileMode.mirror, - ), - ), - child: child, - ), - ); - } -} diff --git a/lib/pages/video/detail/widgets/header_control.dart b/lib/pages/video/detail/widgets/header_control.dart index 9a429d11..66042a43 100644 --- a/lib/pages/video/detail/widgets/header_control.dart +++ b/lib/pages/video/detail/widgets/header_control.dart @@ -483,7 +483,11 @@ class _HeaderControlState extends State { size: 15, color: Colors.white, ), - fuc: () => Get.offAll(const MainApp()), + fuc: () { + // 销毁播放器实例 + widget.controller!.dispose(type: 'all'); + Get.offAll(const MainApp()); + }, ), const Spacer(), // ComBtn( diff --git a/lib/plugin/pl_player/controller.dart b/lib/plugin/pl_player/controller.dart index e801ab36..77f48091 100644 --- a/lib/plugin/pl_player/controller.dart +++ b/lib/plugin/pl_player/controller.dart @@ -678,11 +678,13 @@ class PlPlayerController { videoFitChangedTimer?.cancel(); } - Future dispose() async { + Future dispose({String type = 'single'}) async { // 每次减1,最后销毁 - _playerCount.value -= 1; - if (playerCount.value > 0) { - return; + if (type == 'single') { + _playerCount.value -= 1; + if (playerCount.value > 0) { + return; + } } _timer?.cancel(); diff --git a/lib/plugin/pl_player/view.dart b/lib/plugin/pl_player/view.dart index e70bec30..784b2df0 100644 --- a/lib/plugin/pl_player/view.dart +++ b/lib/plugin/pl_player/view.dart @@ -8,7 +8,6 @@ import 'package:get/get.dart'; import 'package:hive/hive.dart'; import 'package:media_kit/media_kit.dart'; import 'package:media_kit_video/media_kit_video.dart'; -import 'package:pilipala/common/widgets/app_bar_ani.dart'; import 'package:pilipala/plugin/pl_player/controller.dart'; import 'package:pilipala/plugin/pl_player/models/duration.dart'; import 'package:pilipala/plugin/pl_player/models/fullscreen_mode.dart'; @@ -20,6 +19,7 @@ import 'package:screen_brightness/screen_brightness.dart'; import 'package:volume_controller/volume_controller.dart'; import 'utils/fullscreen.dart'; +import 'widgets/app_bar_ani.dart'; import 'widgets/backward_seek.dart'; import 'widgets/bottom_control.dart'; import 'widgets/common_btn.dart'; @@ -453,6 +453,24 @@ class _PLVideoPlayerState extends State ), ), + Obx(() { + if (_.buffered.value == Duration.zero) { + return Positioned.fill( + child: Container( + color: Colors.black, + child: Center( + child: Image.asset( + 'assets/images/loading.gif', + height: 25, + ), + ), + ), + ); + } else { + return Container(); + } + }), + /// 手势 Positioned.fill( left: 16, @@ -675,23 +693,6 @@ class _PLVideoPlayerState extends State return Container(); } }), - Obx(() { - if (_.buffered.value == Duration.zero) { - return Positioned.fill( - child: Container( - color: Colors.black, - child: Center( - child: Image.asset( - 'assets/images/loading.gif', - height: 25, - ), - ), - ), - ); - } else { - return Container(); - } - }), /// 点击 快进/快退 if (_mountSeekBackwardButton || _mountSeekForwardButton)