Skip to content

Commit 3c9048e

Browse files
layout drawer finalizado
1 parent f4930b2 commit 3c9048e

File tree

7 files changed

+100
-6
lines changed

7 files changed

+100
-6
lines changed

lang/en.json

+5-1
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,9 @@
1010
"small": "Small",
1111
"medium": "Medium",
1212
"large": "Large",
13-
"extra_large": "Extra Large"
13+
"extra_large": "Extra Large",
14+
"language": "Language",
15+
"portuguese": "Portuguese",
16+
"english": "English",
17+
"spanish": "Spanish"
1418
}

lang/es.json

+5-1
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,9 @@
1010
"small": "Pequeña",
1111
"medium": "Medio",
1212
"large": "Grande",
13-
"extra_large": "Extra Grande"
13+
"extra_large": "Extra Grande",
14+
"language": "Idioma",
15+
"portuguese": "Portugués",
16+
"english": "Inglés",
17+
"spanish": "Español"
1418
}

lang/pt.json

+5-1
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,9 @@
1010
"small": "Pequeno",
1111
"medium": "Médio",
1212
"large": "Grande",
13-
"extra_large": "Extra Grande"
13+
"extra_large": "Extra Grande",
14+
"language": "Idioma",
15+
"portuguese": "Português",
16+
"english": "Inglês",
17+
"spanish": "Espanhol"
1418
}

lib/blocs/language.dart

+42
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import 'package:flutter/material.dart';
2+
3+
enum LanguageProps { pt, en, es }
4+
5+
class LanguageChanger with ChangeNotifier {
6+
LanguageChanger(LanguageProps language) {
7+
setLanguage(language);
8+
}
9+
10+
Locale _language;
11+
LanguageProps _valueLanguage;
12+
13+
Locale getLanguage() => _language;
14+
LanguageProps getValueLanguage() => _valueLanguage;
15+
16+
void setLanguage(LanguageProps language) {
17+
switch (language) {
18+
case LanguageProps.pt:
19+
{
20+
_language = Locale('pt', '');
21+
_valueLanguage = LanguageProps.pt;
22+
}
23+
break;
24+
25+
case LanguageProps.en:
26+
{
27+
_language = Locale('en', '');
28+
_valueLanguage = LanguageProps.en;
29+
}
30+
break;
31+
32+
case LanguageProps.es:
33+
{
34+
_language = Locale('es', '');
35+
_valueLanguage = LanguageProps.es;
36+
}
37+
break;
38+
}
39+
40+
notifyListeners();
41+
}
42+
}

lib/components/main_drawer.dart

+31
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import 'package:appbasepe/blocs/language.dart';
12
import 'package:appbasepe/blocs/theme.dart';
23
import 'package:appbasepe/components/radio_form.dart';
34
import 'package:appbasepe/core/internationalization/app_translate.dart';
@@ -20,6 +21,10 @@ class _MainDrawerState extends State<MainDrawer> {
2021
final strLarge = AppTranslate(context).text("large");
2122
final strExtraLarge = AppTranslate(context).text("extra_large");
2223

24+
final strPortuguese = AppTranslate(context).text("portuguese");
25+
final strEnglish = AppTranslate(context).text("english");
26+
final strSpanish = AppTranslate(context).text("spanish");
27+
2328
final themeProps = [
2429
{"label": strLight, "value": ThemeColorProps.light},
2530
{"label": strDark, "value": ThemeColorProps.dark}
@@ -30,10 +35,18 @@ class _MainDrawerState extends State<MainDrawer> {
3035
{"label": strLarge, "value": ThemeTextProps.large},
3136
{"label": strExtraLarge, "value": ThemeTextProps.extraLarge}
3237
];
38+
final languageProps = [
39+
{"label": strPortuguese, "value": LanguageProps.pt},
40+
{"label": strEnglish, "value": LanguageProps.en},
41+
{"label": strSpanish, "value": LanguageProps.es},
42+
];
3343

3444
final theme = Provider.of<ThemeChanger>(context);
45+
final language = Provider.of<LanguageChanger>(context);
46+
3547
ThemeColorProps _valueTheme = theme.getThemeColor();
3648
ThemeTextProps _valueThemeText = theme.getThemeText();
49+
LanguageProps _valueLanguage = language.getValueLanguage();
3750

3851
void _selectTheme(Object item) {
3952
setState(() {
@@ -49,6 +62,13 @@ class _MainDrawerState extends State<MainDrawer> {
4962
theme.setTheme(_valueTheme, item);
5063
}
5164

65+
void _selectLanguage(Object item) {
66+
setState(() {
67+
_valueLanguage = item;
68+
});
69+
language.setLanguage(item);
70+
}
71+
5272
return Drawer(
5373
child: Scaffold(
5474
appBar: AppBar(
@@ -95,6 +115,17 @@ class _MainDrawerState extends State<MainDrawer> {
95115
radioProps: fontProps,
96116
orientation: OrientationProps.column,
97117
),
118+
SizedBox(height: 10),
119+
Text(
120+
AppTranslate(context).text("language"),
121+
style: Theme.of(context).textTheme.headline6,
122+
),
123+
RadioForm(
124+
character: _valueLanguage,
125+
handleSelect: _selectLanguage,
126+
radioProps: languageProps,
127+
orientation: OrientationProps.column,
128+
),
98129
],
99130
),
100131
)

lib/core/internationalization/app_localization_delegate.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ class AppLocalizationsDelegate extends LocalizationsDelegate<AppLocalizations> {
1212

1313
@override
1414
Future<AppLocalizations> load(Locale locale) async {
15-
var localizations = AppLocalizations(Locale('es', 'BR'));
15+
var localizations = AppLocalizations(Locale('en', 'BR'));
1616
await localizations.load();
1717
return localizations;
1818
}

lib/main.dart

+11-2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import 'package:appbasepe/blocs/language.dart';
12
import 'package:appbasepe/blocs/theme.dart';
23
import 'package:appbasepe/core/internationalization/app_localizations.dart';
34
import 'package:flutter/material.dart';
@@ -12,8 +13,16 @@ void main() {
1213
class MyApp extends StatelessWidget {
1314
@override
1415
Widget build(BuildContext context) {
15-
return ChangeNotifierProvider(
16-
create: (_) => ThemeChanger(ThemeColorProps.light, ThemeTextProps.small),
16+
return MultiProvider(
17+
providers: [
18+
ChangeNotifierProvider(
19+
create: (_) =>
20+
ThemeChanger(ThemeColorProps.light, ThemeTextProps.small),
21+
),
22+
ChangeNotifierProvider(
23+
create: (_) => LanguageChanger(LanguageProps.pt),
24+
),
25+
],
1726
child: MaterialAppWithTheme(),
1827
);
1928
}

0 commit comments

Comments
 (0)