diff --git a/lib/pages/common/dyn/common_dyn_page.dart b/lib/pages/common/dyn/common_dyn_page.dart index d03f8ba4..1764afec 100644 --- a/lib/pages/common/dyn/common_dyn_page.dart +++ b/lib/pages/common/dyn/common_dyn_page.dart @@ -211,30 +211,8 @@ abstract class CommonDynPageState extends State EasyThrottle.throttle('replyReply', const Duration(milliseconds: 500), () { int oid = replyItem.oid.toInt(); int rpid = replyItem.id.toInt(); - Widget replyReplyPage({bool showBackBtn = true}) => Scaffold( - resizeToAvoidBottomInset: false, - appBar: AppBar( - primary: showBackBtn, - toolbarHeight: showBackBtn ? null : 45, - title: const Text('评论详情'), - titleSpacing: showBackBtn ? null : 12, - automaticallyImplyLeading: showBackBtn, - actions: showBackBtn - ? null - : [ - IconButton( - tooltip: '关闭', - icon: const Icon(Icons.close, size: 20), - onPressed: Get.back, - ), - ], - shape: Border( - bottom: BorderSide( - color: theme.colorScheme.outline.withValues(alpha: 0.1), - ), - ), - ), - body: ViewSafeArea( + Widget replyReplyPage({bool showBackBtn = true}) { + final child = ViewSafeArea( left: showBackBtn, right: showBackBtn, child: VideoReplyReplyPanel( @@ -242,12 +220,28 @@ abstract class CommonDynPageState extends State id: id, oid: oid, rpid: rpid, - isVideoDetail: false, + isVideoDetail: !showBackBtn, replyType: controller.replyType, firstFloor: replyItem, ), - ), - ); + ); + if (showBackBtn) { + return Scaffold( + resizeToAvoidBottomInset: false, + appBar: AppBar( + title: const Text('评论详情'), + shape: Border( + bottom: BorderSide( + color: theme.colorScheme.outline.withValues(alpha: 0.1), + ), + ), + ), + body: child, + ); + } + return child; + } + if (isPortrait) { Get.to( replyReplyPage, diff --git a/lib/pages/video/introduction/ugc/widgets/triple_state.dart b/lib/pages/video/introduction/ugc/widgets/triple_state.dart index f475cc41..0f7725b6 100644 --- a/lib/pages/video/introduction/ugc/widgets/triple_state.dart +++ b/lib/pages/video/introduction/ugc/widgets/triple_state.dart @@ -2,6 +2,7 @@ import 'dart:async'; import 'dart:math' show pi; import 'package:PiliPlus/pages/common/common_intro_controller.dart'; +import 'package:PiliPlus/utils/utils.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; @@ -40,8 +41,12 @@ abstract class TripleState extends State super.dispose(); } + static final _duration = Utils.isMobile + ? const Duration(milliseconds: 200) + : const Duration(milliseconds: 230); + void onStartTriple() { - _timer ??= Timer(const Duration(milliseconds: 200), () { + _timer ??= Timer(_duration, () { HapticFeedback.lightImpact(); if (introController.hasTriple) { SmartDialog.showToast('已完成三连'); diff --git a/lib/pages/video/widgets/player_focus.dart b/lib/pages/video/widgets/player_focus.dart index fd7e9adc..53a49d43 100644 --- a/lib/pages/video/widgets/player_focus.dart +++ b/lib/pages/video/widgets/player_focus.dart @@ -8,7 +8,7 @@ import 'package:PiliPlus/utils/storage.dart'; import 'package:PiliPlus/utils/storage_key.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart' - show KeyDownEvent, KeyRepeatEvent, KeyUpEvent, LogicalKeyboardKey; + show KeyDownEvent, KeyUpEvent, LogicalKeyboardKey; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; @@ -177,7 +177,7 @@ class PlayerFocus extends StatelessWidget { if (key == LogicalKeyboardKey.arrowRight) { if (!plPlayerController.isLive && hasPlayer) { - if (event is KeyRepeatEvent) { + if (event is KeyDownEvent) { if (!plPlayerController.longPressStatus.value) { plPlayerController.longPressTimer ??= Timer( const Duration(milliseconds: 200),