@@ -26,52 +26,11 @@ AppBar buildAppBar() => AppBar
2626 // Botón de más información //
2727 actions:
2828 [
29- // Menú de idiomas //
30- PopupMenuButton
31- (
32- icon: Icon (Icons .translate),
33- iconSize: 28.0 ,
34- padding: EdgeInsets .only (right: 20.0 ),
35-
36- offset: Offset (0 , kToolbarHeight),
37- shape: RoundedRectangleBorder (),
38-
39- tooltip: S .current.languages,
40- // initialValue: "es",
41-
42- onSelected: (languageCode)
43- {
44- changeLanguage (languageCode);
45- },
46-
47- itemBuilder: (context) =>
48- [
49- // Español //
50- PopupMenuItem
51- (
52- value: "es" ,
53- child: LanguageItem
54- (
55- svgPath: "assets/icons/spanish.svg" ,
56- text: S .current.spanish
57- )
58- ),
59-
60- // Inglés //
61- PopupMenuItem
62- (
63- value: "en" ,
64- child: LanguageItem
65- (
66- svgPath: "assets/icons/english.svg" ,
67- text: S .current.english
68- )
69- )
70- ]
71- )
29+ LanguagesMenu ()
7230 ]
7331);
7432
33+
7534changeLanguage (String languageCode)
7635{
7736 Get .updateLocale (Locale (languageCode));
@@ -115,4 +74,71 @@ class LanguageItem extends StatelessWidget
11574 ]
11675 );
11776 }
77+ }
78+
79+ class LanguagesMenu extends StatefulWidget
80+ {
81+ @override
82+ LanguagesMenuState createState () => LanguagesMenuState ();
83+ }
84+
85+ class LanguagesMenuState extends State < LanguagesMenu >
86+ {
87+ // Describe el valor que toma de cada Item del menú //
88+ // Si el idioma de quien revisa el portafolio NO es //
89+ // Español, entonces se usará Inglés... //
90+ String currentValue =
91+ Get .deviceLocale.languageCode == "es" ? "es" : "en" ;
92+
93+ @override
94+ Widget build (BuildContext context)
95+ {
96+ return // Menú de idiomas //
97+ PopupMenuButton
98+ (
99+ icon: Icon (Icons .translate),
100+ iconSize: 28.0 ,
101+ padding: EdgeInsets .only (right: 20.0 ),
102+
103+ offset: Offset (0 , kToolbarHeight + 4 ),
104+ shape: RoundedRectangleBorder (),
105+
106+ tooltip: S .current.languages,
107+ initialValue: currentValue,
108+
109+ onSelected: (languageCode)
110+ {
111+ changeLanguage (languageCode);
112+ setState (()
113+ {
114+ currentValue = languageCode;
115+ });
116+ },
117+
118+ itemBuilder: (context) =>
119+ [
120+ // Español //
121+ PopupMenuItem
122+ (
123+ value: "es" ,
124+ child: LanguageItem
125+ (
126+ svgPath: "assets/icons/spanish.svg" ,
127+ text: S .current.spanish
128+ )
129+ ),
130+
131+ // Inglés //
132+ PopupMenuItem
133+ (
134+ value: "en" ,
135+ child: LanguageItem
136+ (
137+ svgPath: "assets/icons/english.svg" ,
138+ text: S .current.english
139+ )
140+ )
141+ ]
142+ );
143+ }
118144}
0 commit comments