feat: Propagate user profile updates to group member details and remove trip code sharing UI.
Some checks failed
Deploy to Play Store / build_and_deploy (push) Has been cancelled

This commit is contained in:
Van Leemput Dayron
2025-12-06 16:43:40 +01:00
parent 13933fc56c
commit bf48971dc4
7 changed files with 107 additions and 137 deletions

View File

@@ -11,6 +11,13 @@ class PoliciesContent extends StatelessWidget {
}
}
Future<void> _launchCustomPrivacyPolicy() async {
final Uri url = Uri.parse('https://xeewy.be/travelmate/policies');
if (!await launchUrl(url)) {
throw Exception('Could not launch $url');
}
}
Future<void> _onBackPressed(BuildContext context) async {
if (Navigator.canPop(context)) {
Navigator.pop(context);
@@ -44,108 +51,8 @@ class PoliciesContent extends StatelessWidget {
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
// Section Collecte d'informations
Text(
'Collecte d\'informations',
style: theme.textTheme.titleLarge?.copyWith(
fontWeight: FontWeight.w600,
color: isDark ? Colors.white : Colors.black,
),
),
const SizedBox(height: 10),
Text(
'Nous collectons des informations que vous nous fournissez directement, comme votre nom, adresse e-mail et préférences de voyage.',
style: theme.textTheme.bodyLarge?.copyWith(
color: isDark ? Colors.grey[300] : Colors.grey[800],
),
),
// Keep only the buttons
const SizedBox(height: 20),
// Section Utilisation des données
Text(
'Utilisation des données',
style: theme.textTheme.titleLarge?.copyWith(
fontWeight: FontWeight.w600,
color: isDark ? Colors.white : Colors.black,
),
),
const SizedBox(height: 10),
Text(
'Vos données sont utilisées pour améliorer votre expérience utilisateur et vous proposer des recommandations personnalisées.',
style: theme.textTheme.bodyLarge?.copyWith(
color: isDark ? Colors.grey[300] : Colors.grey[800],
),
),
const SizedBox(height: 20),
// Section Protection des données
Text(
'Protection des données',
style: theme.textTheme.titleLarge?.copyWith(
fontWeight: FontWeight.w600,
color: isDark ? Colors.white : Colors.black,
),
),
const SizedBox(height: 10),
Text(
'Nous mettons en place des mesures de sécurité appropriées pour protéger vos informations personnelles.',
style: theme.textTheme.bodyLarge?.copyWith(
color: isDark ? Colors.grey[300] : Colors.grey[800],
),
),
const SizedBox(height: 20),
// Section Partage des données
Text(
'Partage des données',
style: theme.textTheme.titleLarge?.copyWith(
fontWeight: FontWeight.w600,
color: isDark ? Colors.white : Colors.black,
),
),
const SizedBox(height: 10),
Text(
'Nous ne partageons pas vos informations personnelles avec des tiers sans votre consentement explicite.',
style: theme.textTheme.bodyLarge?.copyWith(
color: isDark ? Colors.grey[300] : Colors.grey[800],
),
),
const SizedBox(height: 20),
// Section Droits de l'utilisateur
Text(
'Vos droits',
style: theme.textTheme.titleLarge?.copyWith(
fontWeight: FontWeight.w600,
color: isDark ? Colors.white : Colors.black,
),
),
const SizedBox(height: 10),
Text(
'Vous avez le droit d\'accéder, de corriger ou de supprimer vos données personnelles à tout moment. Veuillez nous contacter pour toute demande.',
style: theme.textTheme.bodyLarge?.copyWith(
color: isDark ? Colors.grey[300] : Colors.grey[800],
),
),
const SizedBox(height: 20),
// Section Contact
Text(
'Nous contacter',
style: theme.textTheme.titleLarge?.copyWith(
fontWeight: FontWeight.w600,
color: isDark ? Colors.white : Colors.black,
),
),
const SizedBox(height: 10),
Text(
'Pour toute question concernant cette politique de confidentialité, veuillez nous contacter à support@travelmate.com',
style: theme.textTheme.bodyLarge?.copyWith(
color: isDark ? Colors.grey[300] : Colors.grey[800],
),
),
const SizedBox(height: 20),
// Bouton Google Privacy Policy
SizedBox(
width: double.infinity,
@@ -163,6 +70,24 @@ class PoliciesContent extends StatelessWidget {
),
),
),
const SizedBox(height: 12),
// Bouton Nos politiques de confidentialité
SizedBox(
width: double.infinity,
child: ElevatedButton.icon(
onPressed: _launchCustomPrivacyPolicy,
icon: const Icon(Icons.policy),
label: const Text('Nos politiques de confidentialités'),
style: ElevatedButton.styleFrom(
backgroundColor: theme.primaryColor,
foregroundColor: Colors.white,
padding: const EdgeInsets.symmetric(vertical: 12),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(8),
),
),
),
),
const SizedBox(height: 32),
],
),

View File

@@ -3,9 +3,33 @@ import 'package:travel_mate/components/settings/policies/policies_content.dart';
import 'theme/settings_theme_content.dart';
import 'profile/profile_content.dart';
class SettingsContent extends StatelessWidget {
import 'package:package_info_plus/package_info_plus.dart';
class SettingsContent extends StatefulWidget {
const SettingsContent({super.key});
@override
State<SettingsContent> createState() => _SettingsContentState();
}
class _SettingsContentState extends State<SettingsContent> {
String _version = '...';
@override
void initState() {
super.initState();
_loadVersion();
}
Future<void> _loadVersion() async {
final packageInfo = await PackageInfo.fromPlatform();
if (mounted) {
setState(() {
_version = packageInfo.version;
});
}
}
Future<void> changePage(BuildContext context, Widget page) async {
Navigator.push(context, MaterialPageRoute(builder: (context) => page));
}
@@ -70,7 +94,7 @@ class SettingsContent extends StatelessWidget {
),
const SizedBox(height: 4),
Text(
'1.0.0',
_version,
style: TextStyle(fontSize: 14, color: Colors.grey[500]),
),
],