import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import '../providers/providers.dart'; class SettingsPage extends ConsumerWidget { const SettingsPage({super.key}); @override Widget build(BuildContext context, WidgetRef ref) { final userProfile = ref.watch(userProfileProvider); final language = ref.watch(languageProvider); return Scaffold( appBar: AppBar( title: const Text('Settings'), ), body: ListView( children: [ Padding( padding: const EdgeInsets.all(16.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( 'Profile', style: Theme.of(context).textTheme.titleMedium, ), const SizedBox(height: 16), userProfile.when( data: (profile) { if (profile == null) { return const Text('No profile information'); } return Card( child: Padding( padding: const EdgeInsets.all(16.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( children: [ CircleAvatar( radius: 32, child: Text( profile.firstName[0].toUpperCase(), style: Theme.of(context).textTheme.titleLarge, ), ), const SizedBox(width: 16), Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( profile.fullName, style: Theme.of(context).textTheme.titleMedium, ), const SizedBox(height: 4), Text( profile.email, style: Theme.of(context).textTheme.bodySmall, ), ], ), ), ], ), ], ), ), ); }, loading: () => const CircularProgressIndicator(), error: (error, stackTrace) => Text('Error: $error'), ), ], ), ), const Divider(), Padding( padding: const EdgeInsets.all(16.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( 'Preferences', style: Theme.of(context).textTheme.titleMedium, ), const SizedBox(height: 16), ListTile( title: const Text('Language'), subtitle: Text(language == 'fr' ? 'Franais' : 'English'), trailing: DropdownButton( value: language, onChanged: (String? newValue) { if (newValue != null) { ref.read(languageProvider.notifier).state = newValue; } }, items: const [ DropdownMenuItem( value: 'en', child: Text('English'), ), DropdownMenuItem( value: 'fr', child: Text('Franais'), ), ], ), ), ], ), ), const Divider(), Padding( padding: const EdgeInsets.all(16.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( 'Account', style: Theme.of(context).textTheme.titleMedium, ), const SizedBox(height: 16), SizedBox( width: double.infinity, child: ElevatedButton.icon( icon: const Icon(Icons.logout), label: const Text('Logout'), style: ElevatedButton.styleFrom( backgroundColor: Theme.of(context).colorScheme.error, foregroundColor: Theme.of(context).colorScheme.onError, ), onPressed: () async { final authService = ref.read(authServiceProvider); await authService.logout(); if (context.mounted) { // ignore: unused_result ref.refresh(isAuthenticatedProvider); if (context.mounted) { Navigator.of(context).pushReplacementNamed('/'); } } }, ), ), ], ), ), const Divider(), Padding( padding: const EdgeInsets.all(16.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( 'About', style: Theme.of(context).textTheme.titleMedium, ), const SizedBox(height: 16), ListTile( title: const Text('App Version'), subtitle: const Text('1.0.0'), ), ListTile( title: const Text('Built with Flutter'), subtitle: const Text('Plan B Logistics Management System'), ), ], ), ), ], ), ); } }