diff --git a/lib/common.dart b/lib/common.dart index e199db1..a63745a 100644 --- a/lib/common.dart +++ b/lib/common.dart @@ -156,8 +156,9 @@ getCurrencyTitle(int code) { getLocaleTitle(String code) { switch(code) { - case 'ru': return languages[0]; - case 'en': return languages[1]; - case 'ua': return languages[2]; + case 'ru': return 'Русский'; + case 'en': return 'English'; + case 'ua': return 'Український'; + case 'es': return 'Español'; } } \ No newline at end of file diff --git a/lib/consts.dart b/lib/consts.dart index 7fc89b3..375476d 100644 --- a/lib/consts.dart +++ b/lib/consts.dart @@ -34,11 +34,4 @@ const Color inputFieldBackground = const Color(0xffefefef); // Dimens const double verticalMargin = 28.0; const double buttonHeight = 48.0; -const double iconHeight = 20.0; - -List languages = const [ - 'Русский', - 'English', - 'Український', - 'Español' -]; \ No newline at end of file +const double iconHeight = 20.0; \ No newline at end of file diff --git a/lib/db.dart b/lib/db.dart index 6996c57..39ceb20 100644 --- a/lib/db.dart +++ b/lib/db.dart @@ -1,5 +1,6 @@ import 'dart:async'; import 'dart:io'; +import 'dart:ui'; import 'package:path/path.dart'; import 'package:sqflite/sqflite.dart'; @@ -110,15 +111,18 @@ class SqliteHelper { return locale; } + Future saveLocale(String locale) async { + db.update(tableSettings, {columnLocale: locale}); + } + Future getCurrency() async { Map settings = await selectAll(tableSettings); int currency = settings != null ? settings[columnCurrency] : null; return currency; } - Future saveCurrency(int currency) async { + Future saveCurrency(int currency) async { db.update(tableSettings, {columnCurrency: currency}); - return currency; } Future selectAll(String table) async { diff --git a/lib/screens/currencies.dart b/lib/screens/currencies.dart index 16c4986..83b5b9a 100644 --- a/lib/screens/currencies.dart +++ b/lib/screens/currencies.dart @@ -48,7 +48,6 @@ class _CurrenciesState extends SettingsBaseState { @override saveOption() async { - print(currencies[selectedItem]); await helper.saveCurrency(currencies[selectedItem]); } } \ No newline at end of file diff --git a/lib/screens/languages.dart b/lib/screens/languages.dart index 3978a68..16578ca 100644 --- a/lib/screens/languages.dart +++ b/lib/screens/languages.dart @@ -1,16 +1,16 @@ +import 'package:checker/base/base_screen.dart'; import 'package:checker/base/settings_base_state.dart'; import 'package:checker/db.dart'; import 'package:flutter/material.dart'; import 'package:checker/consts.dart'; import 'package:checker/strings.dart'; import 'package:checker/common.dart'; +import 'package:intl/intl.dart'; -class LanguagesScreen extends StatefulWidget { +class LanguagesScreen extends BaseScreen { - final SqliteHelper helper; - final String app; + LanguagesScreen(helper, app) : super(helper, app); - LanguagesScreen(this.helper, this.app); @override State createState() => new LanguagesState(helper, app); } @@ -18,10 +18,18 @@ class LanguagesState extends SettingsBaseState { LanguagesState(SqliteHelper helper, String app) : super(helper, app); + List languages = const ['ru', 'en', 'ua', 'es']; @override List getOptions() { - return languages; + + List list = new List(); + + for (String code in languages) { + list.add(getLocaleTitle(code)); + } + + return list; } @override @@ -30,8 +38,14 @@ class LanguagesState extends SettingsBaseState { } @override - void saveOption() { -// helper.sa(languages[selectedItem]); + saveOption() async { + await helper.saveLocale(languages[selectedItem]); + Intl.defaultLocale = languages[selectedItem]; + StringsLocalization.load(languages[selectedItem]).then((_) { + setState(() { + + }); + }); } @override diff --git a/lib/screens/settings.dart b/lib/screens/settings.dart index 2e49bc0..9a528a2 100644 --- a/lib/screens/settings.dart +++ b/lib/screens/settings.dart @@ -6,6 +6,7 @@ import 'package:checker/common.dart'; import 'package:checker/consts.dart'; import 'package:checker/db.dart'; import 'package:checker/screens/currencies.dart'; +import 'package:checker/screens/languages.dart'; import 'package:checker/strings.dart'; import 'package:flutter/material.dart'; @@ -28,7 +29,10 @@ class MenuItem { class SettingsState extends BaseState { - List menuItems = [new MenuItem(StringsLocalization.currency(), '')]; + List menuItems = [ + new MenuItem(StringsLocalization.currency(), ''), + new MenuItem(StringsLocalization.locale(), '') + ]; bool returnToScanner; @@ -44,6 +48,7 @@ class SettingsState extends BaseState { if (menuItems[0].selectedValue != info['currency'].toString()) { setState(() { menuItems[0].selectedValue = info['currency'].toString(); + menuItems[1].selectedValue = info['locale'].toString(); }); } } @@ -67,26 +72,28 @@ class SettingsState extends BaseState { List getSettings() { List widgets = new List(); - for (MenuItem item in menuItems) { - if (item.selectedValue != '') { - widgets.add(getSettingsItem(item)); + for (int i = 0; i < menuItems.length; i++) { + if (menuItems[i].selectedValue != '') { + widgets.add(getSettingsItem(() => onPressed(menuItems.indexOf(menuItems[i])), + menuItems[i].title, + i == 0 ? getCurrencyTitle(int.parse(menuItems[i].selectedValue)) : getLocaleTitle(menuItems[i].selectedValue))); } } return widgets; } - Widget getSettingsItem(MenuItem item) { + Widget getSettingsItem(VoidCallback onPressed, String title, String value) { return new Container( height: 56.0, padding: new EdgeInsets.only(left: 8.0), child: (new FlatButton( - onPressed: () => onPressed(menuItems.indexOf(item)), + onPressed: onPressed, child: new Row(children: [ - new Expanded(child: new Text(item.title, style: new TextStyle( + new Expanded(child: new Text(title, style: new TextStyle( fontWeight: FontWeight.w600, color: faqGrey, fontSize: 14.0))), - new Text(getCurrencyTitle(int.parse(item.selectedValue)), + new Text(value, style: new TextStyle( fontWeight: FontWeight.w400, color: faqGrey, @@ -99,6 +106,8 @@ class SettingsState extends BaseState { switch (position) { case 0 : return pushRoute(context, new CurrenciesScreen(helper, app)); + case 1 : + return pushRoute(context, new LanguagesScreen(helper, app)); } }