优化录制页面功能,修正剪贴板信息提示,新增停止录制后的结果提示,改进触摸锁定解锁逻辑,提升用户交互体验。
This commit is contained in:
@@ -98,7 +98,7 @@ class _RecordingPageState extends ConsumerState<RecordingPage> {
|
||||
return '录制完成';
|
||||
}
|
||||
|
||||
/// 从剪贴板粘贴赛事信息(与 header「粘贴赛事信息」一致)。
|
||||
/// 从剪贴板粘贴赛事信息(与 header「粘贴选手信息」一致)。
|
||||
Future<void> _pasteEventInfo() async {
|
||||
final result = await ref
|
||||
.read(recordingViewModelProvider.notifier)
|
||||
@@ -167,6 +167,18 @@ class _RecordingPageState extends ConsumerState<RecordingPage> {
|
||||
await ref.read(recordingViewModelProvider.notifier).startRecording();
|
||||
}
|
||||
|
||||
/// 停止录制并按结果显示保存提示。
|
||||
Future<void> _stopRecordingAndShowResult() async {
|
||||
await ref.read(recordingViewModelProvider.notifier).stopRecording();
|
||||
if (!mounted) return;
|
||||
final latest = ref.read(recordingViewModelProvider).session;
|
||||
if (latest.gallerySaveFailed) {
|
||||
AppToast.show(latest.errorMessage ?? '保存到相册失败,请开启相册权限');
|
||||
return;
|
||||
}
|
||||
await _showRecordingSavedDialogIfNeeded();
|
||||
}
|
||||
|
||||
/// 清空剪贴板信息,准备新一轮录制
|
||||
void _clearClipboardForNewRound() {
|
||||
final notifier = ref.read(recordingViewModelProvider.notifier);
|
||||
@@ -269,20 +281,7 @@ class _RecordingPageState extends ConsumerState<RecordingPage> {
|
||||
showClipboardHint: showClipboardInfo,
|
||||
clipboardAddress: clipboard.address.trim(),
|
||||
onStart: _onStartRecording,
|
||||
onStop: () async {
|
||||
await viewModel.stopRecording();
|
||||
if (!context.mounted) return;
|
||||
final latest = ref
|
||||
.read(recordingViewModelProvider)
|
||||
.session;
|
||||
if (latest.gallerySaveFailed) {
|
||||
AppToast.show(
|
||||
latest.errorMessage ?? '保存到相册失败,请开启相册权限',
|
||||
);
|
||||
return;
|
||||
}
|
||||
await _showRecordingSavedDialogIfNeeded();
|
||||
},
|
||||
onStop: _stopRecordingAndShowResult,
|
||||
onOpenDnd: () async {
|
||||
await viewModel.openDndSettings();
|
||||
await viewModel.refreshDndAccess();
|
||||
@@ -299,7 +298,13 @@ class _RecordingPageState extends ConsumerState<RecordingPage> {
|
||||
if (state.isTouchLocked && state.isRecording)
|
||||
RecordingTouchLockOverlayWidget(
|
||||
enabled: true,
|
||||
onUnlocked: () => viewModel.setTouchLocked(false),
|
||||
onUnlocked: (intent) async {
|
||||
viewModel.setTouchLocked(false);
|
||||
if (intent ==
|
||||
RecordingTouchLockUnlockIntent.stopRecording) {
|
||||
await _stopRecordingAndShowResult();
|
||||
}
|
||||
},
|
||||
),
|
||||
if (state.isStartingRecording)
|
||||
RecordingLoadingOverlayWidget(
|
||||
|
||||
Reference in New Issue
Block a user