From e1446337e94b2a0677eb5a7fb363c407fb4707ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9E=97=E9=94=8B?= <2535831261@qq.com> Date: Fri, 5 Jun 2026 18:52:47 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BA=86=20=E5=90=AF?= =?UTF-8?q?=E5=8A=A8=E5=BD=95=E5=88=B6=E6=95=88=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../qxy/dronex/recording/RecordingCameraController.kt | 9 +++++++++ lib/features/recording/pages/page_record.dart | 5 ++++- .../recording/widgets/widget_recording_button.dart | 4 ++-- .../widgets/widget_recording_loading_overlay.dart | 9 +++++++-- 4 files changed, 22 insertions(+), 5 deletions(-) diff --git a/android/app/src/main/kotlin/com/qxy/dronex/recording/RecordingCameraController.kt b/android/app/src/main/kotlin/com/qxy/dronex/recording/RecordingCameraController.kt index a225439..ed7aa7d 100644 --- a/android/app/src/main/kotlin/com/qxy/dronex/recording/RecordingCameraController.kt +++ b/android/app/src/main/kotlin/com/qxy/dronex/recording/RecordingCameraController.kt @@ -96,6 +96,15 @@ class RecordingCameraController( return } + if ( + boundLifecycleOwner === lifecycleOwner && + preview != null && + videoCapture != null + ) { + onReady(true) + return + } + try { boundLifecycleOwner = lifecycleOwner provider.unbindAll() diff --git a/lib/features/recording/pages/page_record.dart b/lib/features/recording/pages/page_record.dart index 3e54ad4..4c30435 100644 --- a/lib/features/recording/pages/page_record.dart +++ b/lib/features/recording/pages/page_record.dart @@ -298,7 +298,10 @@ class _RecordingPageState extends ConsumerState { onUnlocked: () => viewModel.setTouchLocked(false), ), if (state.isStartingRecording) - const RecordingLoadingOverlayWidget(message: '正在开始录制…'), + RecordingLoadingOverlayWidget( + message: '正在开始录制…', + backgroundColor: Colors.black.withValues(alpha: 0.24), + ), ], ), ), diff --git a/lib/features/recording/widgets/widget_recording_button.dart b/lib/features/recording/widgets/widget_recording_button.dart index 2fd3b3c..271dbfe 100644 --- a/lib/features/recording/widgets/widget_recording_button.dart +++ b/lib/features/recording/widgets/widget_recording_button.dart @@ -46,8 +46,8 @@ class RecordingControlButton extends StatelessWidget { ), ), AnimatedContainer( - duration: const Duration(milliseconds: 300), - curve: Curves.easeInOutCubic, + duration: const Duration(milliseconds: 500), + curve: Curves.ease, width: innerSize, height: innerSize, decoration: BoxDecoration( diff --git a/lib/features/recording/widgets/widget_recording_loading_overlay.dart b/lib/features/recording/widgets/widget_recording_loading_overlay.dart index 09e2051..1396479 100644 --- a/lib/features/recording/widgets/widget_recording_loading_overlay.dart +++ b/lib/features/recording/widgets/widget_recording_loading_overlay.dart @@ -3,15 +3,20 @@ import 'package:flutter_screenutil/flutter_screenutil.dart'; /// 录制加载遮罩(相机启动/开始录制) class RecordingLoadingOverlayWidget extends StatelessWidget { - const RecordingLoadingOverlayWidget({super.key, required this.message}); + const RecordingLoadingOverlayWidget({ + super.key, + required this.message, + this.backgroundColor = Colors.black, + }); final String message; + final Color backgroundColor; @override /// 显示加载动画与提示文案 Widget build(BuildContext context) { return ColoredBox( - color: Colors.black, + color: backgroundColor, child: Center( child: Column( mainAxisSize: MainAxisSize.min,