重构录制页面,更新对话框逻辑,优化赛事信息粘贴功能,调整相关文本标签。

This commit is contained in:
2026-06-05 15:46:16 +08:00
parent 016aad49b7
commit 0183bd9a6d
6 changed files with 400 additions and 135 deletions

View File

@@ -5,6 +5,7 @@ import 'package:flutter/services.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:recording_tool/core/platform/app_platform_info.dart';
import 'package:recording_tool/core/platform/device_health_checker.dart';
import 'package:recording_tool/features/dialog/dialog-record.dart';
import 'package:recording_tool/features/recording/model/model_recording.dart';
import 'package:recording_tool/features/recording/platform/recording_platform.dart';
import 'package:recording_tool/features/recording/utils/recording_display_name.dart';
@@ -46,7 +47,11 @@ class _RecordingPageState extends ConsumerState<RecordingPage> {
final lines = DeviceHealthChecker.warningLines(snapshot);
if (lines.isEmpty) return;
await AppDialog.deviceHealthAlert(context, lines: lines);
await RecordDialog.showSingle(
context,
title: lines.join('\n'),
buttonText: '确定',
);
}
/// 页面启动:健康检查、读剪贴板、进入录制模式、准备相机会话
@@ -92,21 +97,24 @@ class _RecordingPageState extends ConsumerState<RecordingPage> {
return '录制完成';
}
/// 从剪贴板粘贴赛事信息(与 header「粘贴赛事信息」一致
Future<void> _pasteEventInfo() async {
final result = await ref
.read(recordingViewModelProvider.notifier)
.getClipboardContent();
if (!mounted) return;
if (result != ClipboardReadResult.success) {
AppToast.show('无选手信息');
}
}
/// 无选手信息时弹窗提示
Future<void> _showNoPlayerInfoDialog() {
return showDialog<void>(
context: context,
builder: (dialogContext) {
return AlertDialog(
content: const Text('无选手信息'),
actions: [
TextButton(
onPressed: () => Navigator.of(dialogContext).pop(),
child: const Text('确定'),
),
],
);
},
return RecordDialog.showSingle(
context,
title: '无选手信息!',
buttonText: '粘贴',
onPressed: _pasteEventInfo,
);
}
@@ -208,15 +216,7 @@ class _RecordingPageState extends ConsumerState<RecordingPage> {
eventTitle: showClipboardInfo ? clipboard.title : null,
isRecording: state.isRecording,
elapsedLabel: state.elapsedLabel,
onPasteEventInfo: () async {
final result = await ref
.read(recordingViewModelProvider.notifier)
.getClipboardContent();
if (!context.mounted) return;
if (result != ClipboardReadResult.success) {
AppToast.show('无赛事信息');
}
},
onPasteEventInfo: _pasteEventInfo,
onClearEventInfo: _clearClipboardForNewRound,
),
Expanded(