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) {