Files
umbrix/lib/features/settings/about/privacy_policy_screen.dart
Umbrix Developer 76a374950f feat: mobile-like window size and always-visible stats
- Changed window size to mobile phone format (400x800)
- Removed width condition for ActiveProxyFooter - now always visible
- Added run-umbrix.sh launch script with icon copying
- Stats cards now display on all screen sizes
2026-01-17 13:09:20 +03:00

101 lines
3.0 KiB
Dart

import 'package:flutter/material.dart';
import 'package:umbrix/core/localization/translations.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
class PrivacyPolicyScreen extends ConsumerWidget {
const PrivacyPolicyScreen({super.key});
@override
Widget build(BuildContext context, WidgetRef ref) {
final t = ref.watch(translationsProvider);
return Scaffold(
appBar: AppBar(
title: Text(t.about.privacyPolicy),
),
body: SingleChildScrollView(
padding: const EdgeInsets.all(16),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
t.about.privacyPolicy.toUpperCase(),
style: Theme.of(context).textTheme.headlineSmall?.copyWith(
fontWeight: FontWeight.bold,
),
),
const SizedBox(height: 8),
Text(
t.privacyPolicy.lastUpdated,
style: Theme.of(context).textTheme.bodySmall?.copyWith(
color: Theme.of(context).colorScheme.onSurfaceVariant,
),
),
const SizedBox(height: 24),
_buildSection(
context,
'1. ${t.privacyPolicy.section1Title}',
t.privacyPolicy.section1Content,
),
_buildSection(
context,
'2. ${t.privacyPolicy.section2Title}',
t.privacyPolicy.section2Content,
),
_buildSection(
context,
'3. ${t.privacyPolicy.section3Title}',
t.privacyPolicy.section3Content,
),
_buildSection(
context,
'4. ${t.privacyPolicy.section4Title}',
t.privacyPolicy.section4Content,
),
_buildSection(
context,
'5. ${t.privacyPolicy.section5Title}',
t.privacyPolicy.section5Content,
),
_buildSection(
context,
'6. ${t.privacyPolicy.section6Title}',
t.privacyPolicy.section6Content,
),
_buildSection(
context,
'7. ${t.privacyPolicy.section7Title}',
t.privacyPolicy.section7Content,
),
const SizedBox(height: 24),
],
),
),
);
}
Widget _buildSection(BuildContext context, String title, String content) {
return Padding(
padding: const EdgeInsets.only(bottom: 20),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
title,
style: Theme.of(context).textTheme.titleMedium?.copyWith(
fontWeight: FontWeight.bold,
),
),
const SizedBox(height: 8),
Text(
content,
style: Theme.of(context).textTheme.bodyMedium?.copyWith(
height: 1.6,
),
),
],
),
);
}
}