import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; class LanguageSelector extends StatefulWidget { final String currentLanguage; final ValueChanged onLanguageChanged; final List> languages; final bool showOnlyIcon; const LanguageSelector({ super.key, required this.currentLanguage, required this.onLanguageChanged, required this.languages, required this.showOnlyIcon, }); @override State createState() => _LanguageSelectorState(); } class _LanguageSelectorState extends State { @override Widget build(BuildContext context) { final currentLangData = widget.languages.firstWhere( (lang) => lang['code'] == widget.currentLanguage, orElse: () => {'code': 'en', 'name': 'English'}, ); if (widget.showOnlyIcon) { return InkWell( onTap: () { final newLanguage = widget.currentLanguage == 'ar' ? 'en' : 'ar'; widget.onLanguageChanged(newLanguage); }, child: Utils.buildSvgWithAssets(icon: AppAssets.globe_black)); } else { return Stack(clipBehavior: Clip.none, children: [ Container( decoration: BoxDecoration( borderRadius: BorderRadius.circular((12.r)), color: AppColors.secondaryLightRedColor, ), child: InkWell( onTap: () { final newLanguage = widget.currentLanguage == 'ar' ? 'en' : 'ar'; widget.onLanguageChanged(newLanguage); }, child: Container( padding: EdgeInsets.all(8.h), decoration: BoxDecoration(borderRadius: BorderRadius.circular((12.r))), child: Row( mainAxisSize: MainAxisSize.min, children: [ Utils.buildSvgWithAssets(icon: AppAssets.language), SizedBox(width: 6.h), Text( currentLangData['name']?.toUpperCase() ?? 'EN', style: context.dynamicTextStyle( fontWeight: FontWeight.w500, fontSize: 14.f, color: AppColors.primaryRedColor, letterSpacing: 0.1, isLanguageSwitcher: true, ), ), ], ), ), ), ), ]); } } }