import 'package:flutter/material.dart'; import 'package:google_fonts/google_fonts.dart'; import '../theme/app_theme.dart'; import '../utils/app_branding.dart'; import '../widgets/custom_app_bar.dart'; import '../widgets/docverse_brand.dart'; class PrivacyPolicyScreen extends StatelessWidget { const PrivacyPolicyScreen({super.key}); @override Widget build(BuildContext context) { final bodyStyle = Theme.of(context).textTheme.bodyLarge; final headingStyle = Theme.of(context).textTheme.titleLarge; return Scaffold( appBar: const DocVerseAppBar( title: 'Privacy Policy', showLogo: false, ), body: ListView( padding: const EdgeInsets.all(AppSpacing.xl), children: [ const Center( child: DocVerseLogo( iconSize: 44, stacked: true, ), ), const SizedBox(height: AppSpacing.xl), Text(AppBranding.name, style: headingStyle), const SizedBox(height: AppSpacing.sm), Text( '${AppBranding.name} is built for private reading. What you open, read, ' 'and save stays on your device — not on our servers, not in the cloud, ' 'and not with anyone else. You are in full control of your documents.', style: bodyStyle, ), const SizedBox(height: AppSpacing.xl), Text('No One Can Read Your Documents', style: headingStyle), const SizedBox(height: AppSpacing.sm), Text( 'We cannot read your files. ${AppBranding.name} has no backend, no user accounts, ' 'and no way to access what you import. There is no upload step, no remote ' 'storage, and no team on our side that can view your content. Your reading ' 'history, bookmarks, and files exist only in local storage on your phone, ' 'tablet, or browser.', style: bodyStyle, ), const SizedBox(height: AppSpacing.xl), Text('Read & Save Whatever You Want', style: headingStyle), const SizedBox(height: AppSpacing.sm), Text( 'Import PDFs, Word, text, RTF, and Markdown — read them offline, ' 'bookmark your place, and keep them as long as you like. Delete them anytime. ' 'Share a file only when you explicitly choose to, using your device\'s ' 'share sheet. Until then, your documents never leave your device.', style: bodyStyle, ), const SizedBox(height: AppSpacing.xl), Text('Our Privacy Commitments', style: headingStyle), const SizedBox(height: AppSpacing.md), _bullet( context, 'No account, login, or sign-up required', ), _bullet(context, 'No analytics, tracking, or advertising'), _bullet(context, 'No data collection — zero personal data sent to us'), _bullet(context, 'No cloud sync — files stay in local device storage'), _bullet( context, 'Your name and preferences saved only on this device', ), _bullet( context, 'Internet used only when you tap Share — never automatically', ), _bullet( context, 'No third-party SDKs that harvest your reading behavior', ), _bullet( context, 'Works fully offline — airplane mode friendly', ), const SizedBox(height: AppSpacing.xl), Text('Your Rights', style: headingStyle), const SizedBox(height: AppSpacing.sm), Text( 'You own your data. You can clear all imported files from Settings at any ' 'time. Uninstalling the app removes local storage from your device. Because ' 'we never receive your documents, there is nothing for us to delete, sell, ' 'or share on your behalf.', style: bodyStyle, ), const SizedBox(height: AppSpacing.xl), Container( padding: const EdgeInsets.all(AppSpacing.lg), decoration: BoxDecoration( color: Theme.of(context).colorScheme.primary.withValues(alpha: 0.08), borderRadius: BorderRadius.circular(AppRadius.medium), border: Border.all( color: Theme.of(context).colorScheme.primary.withValues(alpha: 0.2), ), ), child: Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ Icon( Icons.verified_user_rounded, color: Theme.of(context).colorScheme.primary, size: 28, ), const SizedBox(width: AppSpacing.md), Expanded( child: Text( '${AppBranding.name}. Read with confidence. ' 'Your documents are yours alone.', style: GoogleFonts.inter( fontSize: 14, fontWeight: FontWeight.w500, height: 1.5, color: Theme.of(context).colorScheme.onSurface, ), ), ), ], ), ), const SizedBox(height: AppSpacing.xl), Center( child: Text( '${AppBranding.name}\n${AppBranding.versionSummary}', textAlign: TextAlign.center, style: Theme.of(context).textTheme.labelMedium?.copyWith( color: Theme.of(context).colorScheme.onSurfaceVariant, ), ), ), const SizedBox(height: AppSpacing.xxl), ], ), ); } Widget _bullet(BuildContext context, String text) { return Padding( padding: const EdgeInsets.only(bottom: AppSpacing.sm), child: Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ Padding( padding: const EdgeInsets.only(top: 6), child: Icon( Icons.check_circle_rounded, size: 18, color: Theme.of(context).colorScheme.primary, ), ), const SizedBox(width: AppSpacing.sm), Expanded( child: Text(text, style: Theme.of(context).textTheme.bodyLarge), ), ], ), ); } }