From 41fcd730f06646f756b8be095b5243544f5931d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9E=97=E9=94=8B?= <2535831261@qq.com> Date: Mon, 8 Jun 2026 15:51:05 +0800 Subject: [PATCH] =?UTF-8?q?=E7=B2=98=E8=B4=B4=E5=88=A0=E9=99=A4=E6=8C=89?= =?UTF-8?q?=E9=92=AE=E4=B8=8D=E5=8F=82=E4=B8=8E=E8=BF=87=E6=B8=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- devtools_options.yaml | 3 + .../widgets/widget_record_header.dart | 76 +++++++++---------- 2 files changed, 40 insertions(+), 39 deletions(-) create mode 100644 devtools_options.yaml diff --git a/devtools_options.yaml b/devtools_options.yaml new file mode 100644 index 0000000..fa0b357 --- /dev/null +++ b/devtools_options.yaml @@ -0,0 +1,3 @@ +description: This file stores settings for Dart & Flutter DevTools. +documentation: https://docs.flutter.dev/tools/devtools/extensions#configure-extension-enablement-states +extensions: diff --git a/lib/features/recording/widgets/widget_record_header.dart b/lib/features/recording/widgets/widget_record_header.dart index ad89a54..0b99cec 100644 --- a/lib/features/recording/widgets/widget_record_header.dart +++ b/lib/features/recording/widgets/widget_record_header.dart @@ -26,7 +26,7 @@ class RecordHeaderWidget extends StatelessWidget { bool get _showEventTitle => hasValidClipboardInfo; - Widget _buildHeaderContent() { + Widget _buildAnimatedHeaderContent() { if (_showEventTitle) { return _HeaderEventTitleRow( key: ValueKey('title-${eventTitle ?? ''}'), @@ -36,14 +36,6 @@ class RecordHeaderWidget extends StatelessWidget { ); } - if (_showPasteButtons) { - return _HeaderPasteActions( - key: const ValueKey('paste-actions'), - onMockCopy: _mockCopyEventInfo, - onPasteEventInfo: onPasteEventInfo, - ); - } - return const SizedBox.shrink(key: ValueKey('header-empty')); } @@ -72,13 +64,26 @@ class RecordHeaderWidget extends StatelessWidget { fit: BoxFit.contain, ), Expanded( - child: AnimatedSwitcher( - duration: RecordContentTransition.duration, - switchInCurve: Curves.easeOutCubic, - switchOutCurve: Curves.easeInCubic, - layoutBuilder: RecordContentTransition.stackLayoutBuilder, - transitionBuilder: RecordContentTransition.builder, - child: _buildHeaderContent(), + child: Stack( + alignment: Alignment.center, + children: [ + AnimatedSwitcher( + duration: RecordContentTransition.duration, + switchInCurve: Curves.easeOutCubic, + switchOutCurve: Curves.easeInCubic, + layoutBuilder: RecordContentTransition.stackLayoutBuilder, + transitionBuilder: RecordContentTransition.builder, + child: _buildAnimatedHeaderContent(), + ), + if (_showPasteButtons) + Align( + alignment: Alignment.centerRight, + child: _HeaderPasteActions( + onMockCopy: _mockCopyEventInfo, + onPasteEventInfo: onPasteEventInfo, + ), + ), + ], ), ), ], @@ -130,28 +135,22 @@ class _HeaderEventTitleRow extends StatelessWidget { ), ), ), - AnimatedSwitcher( - duration: RecordContentTransition.duration, - switchInCurve: Curves.easeOutCubic, - switchOutCurve: Curves.easeInCubic, - transitionBuilder: RecordContentTransition.builder, - child: !isRecording - ? IconButton( - key: const ValueKey('clear-event-info'), - onPressed: onClearEventInfo, - icon: Assets.images.imageDelete.image( - width: 15.r, - height: 15.r, - fit: BoxFit.contain, - excludeFromSemantics: true, - ), - padding: EdgeInsets.zero, - constraints: BoxConstraints(minWidth: 40.r, minHeight: 40.r), - alignment: Alignment.centerRight, - tooltip: '删除', - ) - : const SizedBox.shrink(key: ValueKey('clear-event-info-hidden')), - ), + !isRecording + ? IconButton( + key: const ValueKey('clear-event-info'), + onPressed: onClearEventInfo, + icon: Assets.images.imageDelete.image( + width: 15.r, + height: 15.r, + fit: BoxFit.contain, + excludeFromSemantics: true, + ), + padding: EdgeInsets.zero, + constraints: BoxConstraints(minWidth: 40.r, minHeight: 40.r), + alignment: Alignment.centerRight, + tooltip: '删除', + ) + : const SizedBox.shrink(key: ValueKey('clear-event-info-hidden')), ], ); } @@ -159,7 +158,6 @@ class _HeaderEventTitleRow extends StatelessWidget { class _HeaderPasteActions extends StatelessWidget { const _HeaderPasteActions({ - super.key, required this.onMockCopy, required this.onPasteEventInfo, });