Aidra Connect 10.0.2+16
Aidra Connect Mobile Application
Loading...
Searching...
No Matches
language_selector_dialog.dart
Go to the documentation of this file.
1import 'package:flutter/cupertino.dart';
2import 'package:flutter/material.dart';
3import 'package:flutter_bloc/flutter_bloc.dart';
4import 'package:flutter_screenutil/flutter_screenutil.dart';
5
6import '../../../../../core/localization/language_cubit.dart';
7
8class LanguageSelectorDialog extends StatelessWidget {
9 const LanguageSelectorDialog({super.key});
10
11 @override
12 Widget build(BuildContext context) {
13 return BlocBuilder<LanguageCubit, LanguageState>(
14 builder: (context, state) {
15 final currentLanguage =
16 state is LanguageLoaded ? state.locale.languageCode : 'en';
17
18 return Column(
19 mainAxisSize: MainAxisSize.min,
20 children: [
22 label: 'English',
23 isActive: currentLanguage == 'en',
24 context: context,
25 isEnabled: true,
26 languageCode: 'en',
27 ),
29 label: 'العربية',
30 isActive: currentLanguage == 'ar',
31 context: context,
32 isEnabled: true,
33 languageCode: 'ar',
34 ),
35 ],
36 );
37 },
38 );
39 }
40
42 required String label,
43 required bool isActive,
44 required BuildContext context,
45 required bool isEnabled,
46 required String languageCode,
47 }) {
48 return Opacity(
49 opacity: isEnabled ? .9 : .2,
50 child: ElevatedButton(
51 onPressed: isEnabled
52 ? () => context.read<LanguageCubit>().changeLanguage(languageCode)
53 : null,
54 style: ElevatedButton.styleFrom(
55 backgroundColor: Theme.of(context).colorScheme.surface,
56 overlayColor: Theme.of(context).primaryColor.withOpacity(0.11),
57 padding: EdgeInsets.all(15.sp),
58 ),
59 child: Row(
60 mainAxisAlignment: MainAxisAlignment.spaceBetween,
61 children: [
62 Text(
63 label,
64 style: Theme.of(context).textTheme.bodySmall,
65 ),
66 CupertinoSwitch(
67 value: isActive,
68 activeColor: Theme.of(context).colorScheme.primary,
69 onChanged: isEnabled
70 ? (value) {
71 if (value) {
72 context
73 .read<LanguageCubit>()
74 .changeLanguage(languageCode);
75 }
76 }
77 : null,
78 ),
79 ],
80 ),
81 ),
82 );
83 }
84}
_buildLanguageEnablerButton({ required String label, required bool isActive, required BuildContext context, required bool isEnabled, required String languageCode, })
final bool isActive
const LanguageSelectorDialog({super.key})
override Widget build(BuildContext context)
final String label
final Widget child
final EdgeInsets padding
final Color backgroundColor
final String label
final String languageCode
final double value