@@ -31,77 +31,81 @@ part 'strings_en.g.dart';
3131/// - Locale locale = AppLocale.en.flutterLocale // get flutter locale from enum
3232/// - if (LocaleSettings.currentLocale == AppLocale.en) // locale check
3333enum AppLocale with BaseAppLocale <AppLocale , Translations > {
34- en (languageCode: 'en' ),
35- de (languageCode: 'de' ),
36- es (languageCode: 'es' ),
37- fr (languageCode: 'fr' ),
38- tr (languageCode: 'tr' );
39-
40- const AppLocale ({
41- required this .languageCode,
42- this .scriptCode, // ignore: unused_element, unused_element_parameter
43- this .countryCode, // ignore: unused_element, unused_element_parameter
44- });
45-
46- @override final String languageCode;
47- @override final String ? scriptCode;
48- @override final String ? countryCode;
49-
50- @override
51- Future <Translations > build ({
52- Map <String , Node >? overrides,
53- PluralResolver ? cardinalResolver,
54- PluralResolver ? ordinalResolver,
55- }) async {
56- return buildSync (
57- overrides: overrides,
58- cardinalResolver: cardinalResolver,
59- ordinalResolver: ordinalResolver,
60- );
61- }
62-
63- @override
64- Translations buildSync ({
65- Map <String , Node >? overrides,
66- PluralResolver ? cardinalResolver,
67- PluralResolver ? ordinalResolver,
68- }) {
69- switch (this ) {
70- case AppLocale .en:
71- return TranslationsEn (
72- overrides: overrides,
73- cardinalResolver: cardinalResolver,
74- ordinalResolver: ordinalResolver,
75- );
76- case AppLocale .de:
77- return l_de.TranslationsDe (
78- overrides: overrides,
79- cardinalResolver: cardinalResolver,
80- ordinalResolver: ordinalResolver,
81- );
82- case AppLocale .es:
83- return l_es.TranslationsEs (
84- overrides: overrides,
85- cardinalResolver: cardinalResolver,
86- ordinalResolver: ordinalResolver,
87- );
88- case AppLocale .fr:
89- return l_fr.TranslationsFr (
90- overrides: overrides,
91- cardinalResolver: cardinalResolver,
92- ordinalResolver: ordinalResolver,
93- );
94- case AppLocale .tr:
95- return l_tr.TranslationsTr (
96- overrides: overrides,
97- cardinalResolver: cardinalResolver,
98- ordinalResolver: ordinalResolver,
99- );
100- }
101- }
102-
103- /// Gets current instance managed by [LocaleSettings] .
104- Translations get translations => LocaleSettings .instance.getTranslations (this );
34+ en (languageCode: 'en' ),
35+ de (languageCode: 'de' ),
36+ es (languageCode: 'es' ),
37+ fr (languageCode: 'fr' ),
38+ tr (languageCode: 'tr' );
39+
40+ const AppLocale ({
41+ required this .languageCode,
42+ this .scriptCode, // ignore: unused_element, unused_element_parameter
43+ this .countryCode, // ignore: unused_element, unused_element_parameter
44+ });
45+
46+ @override
47+ final String languageCode;
48+ @override
49+ final String ? scriptCode;
50+ @override
51+ final String ? countryCode;
52+
53+ @override
54+ Future <Translations > build ({
55+ Map <String , Node >? overrides,
56+ PluralResolver ? cardinalResolver,
57+ PluralResolver ? ordinalResolver,
58+ }) async {
59+ return buildSync (
60+ overrides: overrides,
61+ cardinalResolver: cardinalResolver,
62+ ordinalResolver: ordinalResolver,
63+ );
64+ }
65+
66+ @override
67+ Translations buildSync ({
68+ Map <String , Node >? overrides,
69+ PluralResolver ? cardinalResolver,
70+ PluralResolver ? ordinalResolver,
71+ }) {
72+ switch (this ) {
73+ case AppLocale .en:
74+ return TranslationsEn (
75+ overrides: overrides,
76+ cardinalResolver: cardinalResolver,
77+ ordinalResolver: ordinalResolver,
78+ );
79+ case AppLocale .de:
80+ return l_de.TranslationsDe (
81+ overrides: overrides,
82+ cardinalResolver: cardinalResolver,
83+ ordinalResolver: ordinalResolver,
84+ );
85+ case AppLocale .es:
86+ return l_es.TranslationsEs (
87+ overrides: overrides,
88+ cardinalResolver: cardinalResolver,
89+ ordinalResolver: ordinalResolver,
90+ );
91+ case AppLocale .fr:
92+ return l_fr.TranslationsFr (
93+ overrides: overrides,
94+ cardinalResolver: cardinalResolver,
95+ ordinalResolver: ordinalResolver,
96+ );
97+ case AppLocale .tr:
98+ return l_tr.TranslationsTr (
99+ overrides: overrides,
100+ cardinalResolver: cardinalResolver,
101+ ordinalResolver: ordinalResolver,
102+ );
103+ }
104+ }
105+
106+ /// Gets current instance managed by [LocaleSettings] .
107+ Translations get translations =>
108+ LocaleSettings .instance.getTranslations (this );
105109}
106110
107111/// Method A: Simple
@@ -130,10 +134,14 @@ Translations get t => LocaleSettings.instance.currentTranslations;
130134/// final t = Translations.of(context); // Get t variable.
131135/// String a = t.someKey.anotherKey; // Use t variable.
132136/// String b = t['someKey.anotherKey'] ; // Only for edge cases!
133- class TranslationProvider extends BaseTranslationProvider <AppLocale , Translations > {
134- TranslationProvider ({required super .child}) : super (settings: LocaleSettings .instance);
135-
136- static InheritedLocaleData <AppLocale , Translations > of (BuildContext context) => InheritedLocaleData .of <AppLocale , Translations >(context);
137+ class TranslationProvider
138+ extends BaseTranslationProvider <AppLocale , Translations > {
139+ TranslationProvider ({required super .child})
140+ : super (settings: LocaleSettings .instance);
141+
142+ static InheritedLocaleData <AppLocale , Translations > of (
143+ BuildContext context) =>
144+ InheritedLocaleData .of <AppLocale , Translations >(context);
137145}
138146
139147/// Method B shorthand via [BuildContext] extension method.
@@ -142,56 +150,87 @@ class TranslationProvider extends BaseTranslationProvider<AppLocale, Translation
142150/// Usage (e.g. in a widget's build method):
143151/// context.t.someKey.anotherKey
144152extension BuildContextTranslationsExtension on BuildContext {
145- Translations get t => TranslationProvider .of (this ).translations;
153+ Translations get t => TranslationProvider .of (this ).translations;
146154}
147155
148156/// Manages all translation instances and the current locale
149- class LocaleSettings extends BaseFlutterLocaleSettings <AppLocale , Translations > {
150- LocaleSettings ._() : super (
151- utils: AppLocaleUtils .instance,
152- lazy: false ,
153- );
154-
155- static final instance = LocaleSettings ._();
156-
157- // static aliases (checkout base methods for documentation)
158- static AppLocale get currentLocale => instance.currentLocale;
159- static Stream <AppLocale > getLocaleStream () => instance.getLocaleStream ();
160- static Future <AppLocale > setLocale (AppLocale locale, {bool ? listenToDeviceLocale = false }) => instance.setLocale (locale, listenToDeviceLocale: listenToDeviceLocale);
161- static Future <AppLocale > setLocaleRaw (String rawLocale, {bool ? listenToDeviceLocale = false }) => instance.setLocaleRaw (rawLocale, listenToDeviceLocale: listenToDeviceLocale);
162- static Future <AppLocale > useDeviceLocale () => instance.useDeviceLocale ();
163- static Future <void > setPluralResolver ({String ? language, AppLocale ? locale, PluralResolver ? cardinalResolver, PluralResolver ? ordinalResolver}) => instance.setPluralResolver (
164- language: language,
165- locale: locale,
166- cardinalResolver: cardinalResolver,
167- ordinalResolver: ordinalResolver,
168- );
169-
170- // synchronous versions
171- static AppLocale setLocaleSync (AppLocale locale, {bool ? listenToDeviceLocale = false }) => instance.setLocaleSync (locale, listenToDeviceLocale: listenToDeviceLocale);
172- static AppLocale setLocaleRawSync (String rawLocale, {bool ? listenToDeviceLocale = false }) => instance.setLocaleRawSync (rawLocale, listenToDeviceLocale: listenToDeviceLocale);
173- static AppLocale useDeviceLocaleSync () => instance.useDeviceLocaleSync ();
174- static void setPluralResolverSync ({String ? language, AppLocale ? locale, PluralResolver ? cardinalResolver, PluralResolver ? ordinalResolver}) => instance.setPluralResolverSync (
175- language: language,
176- locale: locale,
177- cardinalResolver: cardinalResolver,
178- ordinalResolver: ordinalResolver,
179- );
157+ class LocaleSettings
158+ extends BaseFlutterLocaleSettings <AppLocale , Translations > {
159+ LocaleSettings ._()
160+ : super (
161+ utils: AppLocaleUtils .instance,
162+ lazy: false ,
163+ );
164+
165+ static final instance = LocaleSettings ._();
166+
167+ // static aliases (checkout base methods for documentation)
168+ static AppLocale get currentLocale => instance.currentLocale;
169+ static Stream <AppLocale > getLocaleStream () => instance.getLocaleStream ();
170+ static Future <AppLocale > setLocale (AppLocale locale,
171+ {bool ? listenToDeviceLocale = false }) =>
172+ instance.setLocale (locale, listenToDeviceLocale: listenToDeviceLocale);
173+ static Future <AppLocale > setLocaleRaw (String rawLocale,
174+ {bool ? listenToDeviceLocale = false }) =>
175+ instance.setLocaleRaw (rawLocale,
176+ listenToDeviceLocale: listenToDeviceLocale);
177+ static Future <AppLocale > useDeviceLocale () => instance.useDeviceLocale ();
178+ static Future <void > setPluralResolver (
179+ {String ? language,
180+ AppLocale ? locale,
181+ PluralResolver ? cardinalResolver,
182+ PluralResolver ? ordinalResolver}) =>
183+ instance.setPluralResolver (
184+ language: language,
185+ locale: locale,
186+ cardinalResolver: cardinalResolver,
187+ ordinalResolver: ordinalResolver,
188+ );
189+
190+ // synchronous versions
191+ static AppLocale setLocaleSync (AppLocale locale,
192+ {bool ? listenToDeviceLocale = false }) =>
193+ instance.setLocaleSync (locale,
194+ listenToDeviceLocale: listenToDeviceLocale);
195+ static AppLocale setLocaleRawSync (String rawLocale,
196+ {bool ? listenToDeviceLocale = false }) =>
197+ instance.setLocaleRawSync (rawLocale,
198+ listenToDeviceLocale: listenToDeviceLocale);
199+ static AppLocale useDeviceLocaleSync () => instance.useDeviceLocaleSync ();
200+ static void setPluralResolverSync (
201+ {String ? language,
202+ AppLocale ? locale,
203+ PluralResolver ? cardinalResolver,
204+ PluralResolver ? ordinalResolver}) =>
205+ instance.setPluralResolverSync (
206+ language: language,
207+ locale: locale,
208+ cardinalResolver: cardinalResolver,
209+ ordinalResolver: ordinalResolver,
210+ );
180211}
181212
182213/// Provides utility functions without any side effects.
183214class AppLocaleUtils extends BaseAppLocaleUtils <AppLocale , Translations > {
184- AppLocaleUtils ._() : super (
185- baseLocale: AppLocale .en,
186- locales: AppLocale .values,
187- );
188-
189- static final instance = AppLocaleUtils ._();
190-
191- // static aliases (checkout base methods for documentation)
192- static AppLocale parse (String rawLocale) => instance.parse (rawLocale);
193- static AppLocale parseLocaleParts ({required String languageCode, String ? scriptCode, String ? countryCode}) => instance.parseLocaleParts (languageCode: languageCode, scriptCode: scriptCode, countryCode: countryCode);
194- static AppLocale findDeviceLocale () => instance.findDeviceLocale ();
195- static List <Locale > get supportedLocales => instance.supportedLocales;
196- static List <String > get supportedLocalesRaw => instance.supportedLocalesRaw;
215+ AppLocaleUtils ._()
216+ : super (
217+ baseLocale: AppLocale .en,
218+ locales: AppLocale .values,
219+ );
220+
221+ static final instance = AppLocaleUtils ._();
222+
223+ // static aliases (checkout base methods for documentation)
224+ static AppLocale parse (String rawLocale) => instance.parse (rawLocale);
225+ static AppLocale parseLocaleParts (
226+ {required String languageCode,
227+ String ? scriptCode,
228+ String ? countryCode}) =>
229+ instance.parseLocaleParts (
230+ languageCode: languageCode,
231+ scriptCode: scriptCode,
232+ countryCode: countryCode);
233+ static AppLocale findDeviceLocale () => instance.findDeviceLocale ();
234+ static List <Locale > get supportedLocales => instance.supportedLocales;
235+ static List <String > get supportedLocalesRaw => instance.supportedLocalesRaw;
197236}
0 commit comments