import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; import '../../../common/theme/theme.dart'; import '../../components/button/button.dart'; import 'widgets/language_tile.dart'; @RoutePage() class LanguagePage extends StatefulWidget { const LanguagePage({super.key}); @override State createState() => _LanguagePageState(); } class _LanguagePageState extends State { String selectedLanguage = 'en'; // Default language final List> languages = [ {'code': 'en', 'name': 'English', 'nativeName': 'English', 'flag': '🇺🇸'}, { 'code': 'id', 'name': 'Indonesian', 'nativeName': 'Bahasa Indonesia', 'flag': '🇮🇩', }, {'code': 'es', 'name': 'Spanish', 'nativeName': 'Español', 'flag': '🇪🇸'}, {'code': 'fr', 'name': 'French', 'nativeName': 'Français', 'flag': '🇫🇷'}, {'code': 'de', 'name': 'German', 'nativeName': 'Deutsch', 'flag': '🇩🇪'}, {'code': 'ja', 'name': 'Japanese', 'nativeName': '日本語', 'flag': '🇯🇵'}, {'code': 'ko', 'name': 'Korean', 'nativeName': '한국어', 'flag': '🇰🇷'}, {'code': 'zh', 'name': 'Chinese', 'nativeName': '中文', 'flag': '🇨🇳'}, {'code': 'ar', 'name': 'Arabic', 'nativeName': 'العربية', 'flag': '🇸🇦'}, { 'code': 'pt', 'name': 'Portuguese', 'nativeName': 'Português', 'flag': '🇵🇹', }, ]; void _selectLanguage(String languageCode) { setState(() { selectedLanguage = languageCode; }); } void _confirmSelection() { // Here you would typically save the selected language to SharedPreferences // or pass it back to the parent widget Navigator.pop(context, selectedLanguage); // Show confirmation snackbar ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text( 'Language changed to ${_getLanguageName(selectedLanguage)}', ), backgroundColor: Colors.green, duration: const Duration(seconds: 2), ), ); } String _getLanguageName(String code) { return languages.firstWhere((lang) => lang['code'] == code)['name']; } @override Widget build(BuildContext context) { return Scaffold( backgroundColor: AppColor.background, appBar: AppBar( title: const Text('Select Language'), elevation: 0, leading: IconButton( icon: const Icon(Icons.arrow_back, color: Colors.white), onPressed: () => context.router.back(), ), ), body: Column( children: [ // Language list Expanded( child: ListView.builder( padding: const EdgeInsets.all(16), itemCount: languages.length, itemBuilder: (context, index) { final language = languages[index]; final isSelected = selectedLanguage == language['code']; return LanguageTile( isSelected: isSelected, language: language, onTap: () => _selectLanguage(language['code']), ); }, ), ), // Confirm button Container( padding: const EdgeInsets.all(16), width: double.infinity, decoration: BoxDecoration(color: AppColor.white), child: AppElevatedButton( text: 'Confirm', isLoading: false, onPressed: _confirmSelection, ), ), ], ), ); } }