diff --git a/lib/pages/danmaku/view.dart b/lib/pages/danmaku/view.dart index 3569da5d..ca79836f 100644 --- a/lib/pages/danmaku/view.dart +++ b/lib/pages/danmaku/view.dart @@ -46,7 +46,7 @@ class _PlDanmakuState extends State with WidgetsBindingObserver { showDanmaku = true; } else if (state == AppLifecycleState.paused) { showDanmaku = false; - playerController.danmakuController?.clear(); + _controller?.clear(); } } @@ -89,11 +89,10 @@ class _PlDanmakuState extends State with WidgetsBindingObserver { // 播放器状态监听 void playerListener(PlayerStatus? status) { - if (status == PlayerStatus.paused) { - _controller?.pause(); - } if (status == PlayerStatus.playing) { _controller?.onResume(); + } else { + _controller?.pause(); } } @@ -112,7 +111,10 @@ class _PlDanmakuState extends State with WidgetsBindingObserver { List? currentDanmakuList = _plDanmakuController.getCurrentDanmaku(currentPosition); - if (showDanmaku && currentDanmakuList != null && _controller != null) { + if (showDanmaku && + playerController.playerStatus.status.value == PlayerStatus.playing && + currentDanmakuList != null && + _controller != null) { Color? defaultColor = playerController.blockTypes.contains(6) ? DmUtils.decimalToColor(16777215) : null; @@ -132,6 +134,8 @@ class _PlDanmakuState extends State with WidgetsBindingObserver { void dispose() { WidgetsBinding.instance.removeObserver(this); playerController.removePositionListener(videoPositionListen); + playerController.removeStatusLister(playerListener); + _plDanmakuController.dispose(); super.dispose(); } diff --git a/lib/pages/setting/sponsor_block_page.dart b/lib/pages/setting/sponsor_block_page.dart index 2e8d164a..48bcad8b 100644 --- a/lib/pages/setting/sponsor_block_page.dart +++ b/lib/pages/setting/sponsor_block_page.dart @@ -176,10 +176,10 @@ class _SponsorBlockPageState extends State { ), body: CustomScrollView( slivers: [ - SliverToBoxAdapter(child: _blockLimitItem), - SliverToBoxAdapter(child: Divider(height: 1)), SliverToBoxAdapter(child: _userIdItem), SliverToBoxAdapter(child: Divider(height: 1)), + SliverToBoxAdapter(child: _blockLimitItem), + SliverToBoxAdapter(child: Divider(height: 1)), SliverList.separated( itemCount: _blockSettings.length, itemBuilder: (_, index) => ListTile( diff --git a/lib/pages/video/detail/controller.dart b/lib/pages/video/detail/controller.dart index 6d118c0d..b262b57b 100644 --- a/lib/pages/video/detail/controller.dart +++ b/lib/pages/video/detail/controller.dart @@ -449,15 +449,10 @@ class VideoDetailController extends GetxController await plPlayerController.videoPlayerController ?.seek(Duration( seconds: item.segment.first)); - SmartDialog.showToast( - '已跳至${Utils.formatDuration(item.segment.first)}', - displayType: SmartToastType.normal, - ); + _showBlockToast( + '已跳至${Utils.formatDuration(item.segment.first)}'); } catch (e) { - SmartDialog.showToast( - '跳转失败: $e', - displayType: SmartToastType.normal, - ); + _showBlockToast('跳转失败: $e'); } }, style: IconButton.styleFrom( @@ -487,6 +482,15 @@ class VideoDetailController extends GetxController ); } + void _showBlockToast(String msg) { + SmartDialog.showToast( + msg, + displayType: SmartToastType.normal, + alignment: + plPlayerController.isFullScreen.value ? Alignment(-0.9, 0.5) : null, + ); + } + Future _sponsorBlock() async { dynamic result = await Request().get( '${HttpString.sponsorBlockBaseUrl}/api/skipSegments', @@ -518,7 +522,6 @@ class VideoDetailController extends GetxController segmentList.value = (result.data as List) .where((item) => enableList.contains(item['category']) && - // item['segment'][1] > 0 && item['segment'][1] >= item['segment'][0]) .map( (item) { @@ -555,7 +558,7 @@ class VideoDetailController extends GetxController ); }).toList(); } catch (e) { - debugPrint('filed to parse sponsorblock: $e'); + debugPrint('failed to parse sponsorblock: $e'); } } } @@ -588,17 +591,11 @@ class VideoDetailController extends GetxController ?.seek(Duration(seconds: item.segment.second)); // await plPlayerController // .seekTo(Duration(seconds: item.segment.second)); - SmartDialog.showToast( - '已跳过${item.segmentType.title}片段', - displayType: SmartToastType.normal, - ); + _showBlockToast('已跳过${item.segmentType.title}片段'); item.hasSkipped = true; } catch (e) { debugPrint('failed to skip: $e'); - SmartDialog.showToast( - '${item.segmentType.title}片段跳过失败', - displayType: SmartToastType.normal, - ); + _showBlockToast('${item.segmentType.title}片段跳过失败'); } } break;