From 55eeab43df59321031141f1b513a6e94e48ec9de Mon Sep 17 00:00:00 2001 From: qzl Date: Wed, 15 Apr 2026 18:23:01 +0800 Subject: [PATCH] =?UTF-8?q?feat(divination):=20=E4=B8=BA=E8=A7=A3=E5=8D=A6?= =?UTF-8?q?=E7=BB=93=E6=9E=9C=E7=9A=84=E6=96=AD=E5=8D=A6=E8=A6=81=E7=82=B9?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=A4=8D=E5=88=B6=E6=8C=89=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../screens/divination_result_screen.dart | 34 +++++++++++++++---- 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/apps/lib/features/divination/presentation/screens/divination_result_screen.dart b/apps/lib/features/divination/presentation/screens/divination_result_screen.dart index 4c77dd5..51fa8ca 100644 --- a/apps/lib/features/divination/presentation/screens/divination_result_screen.dart +++ b/apps/lib/features/divination/presentation/screens/divination_result_screen.dart @@ -547,6 +547,7 @@ class _FocusPointsCard extends StatelessWidget { @override Widget build(BuildContext context) { final colors = Theme.of(context).colorScheme; + final l10n = AppLocalizations.of(context)!; final languageCode = Localizations.localeOf(context).languageCode; final title = languageCode == 'en' ? 'Focus Points' : '断卦要点'; if (points.isEmpty) { @@ -564,12 +565,33 @@ class _FocusPointsCard extends StatelessWidget { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Text( - title, - style: Theme.of(context).textTheme.titleMedium?.copyWith( - color: colors.primary, - fontWeight: FontWeight.w700, - ), + Row( + children: [ + Text( + title, + style: Theme.of(context).textTheme.titleMedium?.copyWith( + color: colors.primary, + fontWeight: FontWeight.w700, + ), + ), + const Spacer(), + TextButton( + onPressed: () { + final content = points + .asMap() + .entries + .map((e) => '${e.key + 1}. ${e.value}') + .join('\n'); + Clipboard.setData(ClipboardData(text: content)); + Toast.show( + context, + l10n.toastContentCopiedWithTitle(title), + type: ToastType.success, + ); + }, + child: Text(l10n.resultCopy), + ), + ], ), const SizedBox(height: AppSpacing.sm), ...List.generate(points.length, (index) {