RG-3443 Экран настроек локализации

This commit is contained in:
Ivan Murashov
2017-09-20 18:54:39 +03:00
parent a56839dca4
commit 912aa2248f
6 changed files with 49 additions and 29 deletions

View File

@@ -156,8 +156,9 @@ getCurrencyTitle(int code) {
getLocaleTitle(String code) { getLocaleTitle(String code) {
switch(code) { switch(code) {
case 'ru': return languages[0]; case 'ru': return 'Русский';
case 'en': return languages[1]; case 'en': return 'English';
case 'ua': return languages[2]; case 'ua': return 'Український';
case 'es': return 'Español';
} }
} }

View File

@@ -34,11 +34,4 @@ const Color inputFieldBackground = const Color(0xffefefef);
// Dimens // Dimens
const double verticalMargin = 28.0; const double verticalMargin = 28.0;
const double buttonHeight = 48.0; const double buttonHeight = 48.0;
const double iconHeight = 20.0; const double iconHeight = 20.0;
List<String> languages = const [
'Русский',
'English',
'Український',
'Español'
];

View File

@@ -1,5 +1,6 @@
import 'dart:async'; import 'dart:async';
import 'dart:io'; import 'dart:io';
import 'dart:ui';
import 'package:path/path.dart'; import 'package:path/path.dart';
import 'package:sqflite/sqflite.dart'; import 'package:sqflite/sqflite.dart';
@@ -110,15 +111,18 @@ class SqliteHelper {
return locale; return locale;
} }
Future saveLocale(String locale) async {
db.update(tableSettings, {columnLocale: locale});
}
Future<int> getCurrency() async { Future<int> getCurrency() async {
Map settings = await selectAll(tableSettings); Map settings = await selectAll(tableSettings);
int currency = settings != null ? settings[columnCurrency] : null; int currency = settings != null ? settings[columnCurrency] : null;
return currency; return currency;
} }
Future<int> saveCurrency(int currency) async { Future saveCurrency(int currency) async {
db.update(tableSettings, {columnCurrency: currency}); db.update(tableSettings, {columnCurrency: currency});
return currency;
} }
Future<Map> selectAll(String table) async { Future<Map> selectAll(String table) async {

View File

@@ -48,7 +48,6 @@ class _CurrenciesState extends SettingsBaseState<CurrenciesScreen> {
@override @override
saveOption() async { saveOption() async {
print(currencies[selectedItem]);
await helper.saveCurrency(currencies[selectedItem]); await helper.saveCurrency(currencies[selectedItem]);
} }
} }

View File

@@ -1,16 +1,16 @@
import 'package:checker/base/base_screen.dart';
import 'package:checker/base/settings_base_state.dart'; import 'package:checker/base/settings_base_state.dart';
import 'package:checker/db.dart'; import 'package:checker/db.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:checker/consts.dart'; import 'package:checker/consts.dart';
import 'package:checker/strings.dart'; import 'package:checker/strings.dart';
import 'package:checker/common.dart'; import 'package:checker/common.dart';
import 'package:intl/intl.dart';
class LanguagesScreen extends StatefulWidget { class LanguagesScreen extends BaseScreen {
final SqliteHelper helper; LanguagesScreen(helper, app) : super(helper, app);
final String app;
LanguagesScreen(this.helper, this.app);
@override State createState() => new LanguagesState(helper, app); @override State createState() => new LanguagesState(helper, app);
} }
@@ -18,10 +18,18 @@ class LanguagesState extends SettingsBaseState<LanguagesScreen> {
LanguagesState(SqliteHelper helper, String app) : super(helper, app); LanguagesState(SqliteHelper helper, String app) : super(helper, app);
List<String> languages = const ['ru', 'en', 'ua', 'es'];
@override @override
List<String> getOptions() { List<String> getOptions() {
return languages;
List<String> list = new List();
for (String code in languages) {
list.add(getLocaleTitle(code));
}
return list;
} }
@override @override
@@ -30,8 +38,14 @@ class LanguagesState extends SettingsBaseState<LanguagesScreen> {
} }
@override @override
void saveOption() { saveOption() async {
// helper.sa(languages[selectedItem]); await helper.saveLocale(languages[selectedItem]);
Intl.defaultLocale = languages[selectedItem];
StringsLocalization.load(languages[selectedItem]).then((_) {
setState(() {
});
});
} }
@override @override

View File

@@ -6,6 +6,7 @@ import 'package:checker/common.dart';
import 'package:checker/consts.dart'; import 'package:checker/consts.dart';
import 'package:checker/db.dart'; import 'package:checker/db.dart';
import 'package:checker/screens/currencies.dart'; import 'package:checker/screens/currencies.dart';
import 'package:checker/screens/languages.dart';
import 'package:checker/strings.dart'; import 'package:checker/strings.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@@ -28,7 +29,10 @@ class MenuItem {
class SettingsState extends BaseState<SettingsScreen> { class SettingsState extends BaseState<SettingsScreen> {
List<MenuItem> menuItems = [new MenuItem(StringsLocalization.currency(), '')]; List<MenuItem> menuItems = [
new MenuItem(StringsLocalization.currency(), ''),
new MenuItem(StringsLocalization.locale(), '')
];
bool returnToScanner; bool returnToScanner;
@@ -44,6 +48,7 @@ class SettingsState extends BaseState<SettingsScreen> {
if (menuItems[0].selectedValue != info['currency'].toString()) { if (menuItems[0].selectedValue != info['currency'].toString()) {
setState(() { setState(() {
menuItems[0].selectedValue = info['currency'].toString(); menuItems[0].selectedValue = info['currency'].toString();
menuItems[1].selectedValue = info['locale'].toString();
}); });
} }
} }
@@ -67,26 +72,28 @@ class SettingsState extends BaseState<SettingsScreen> {
List<Widget> getSettings() { List<Widget> getSettings() {
List<Widget> widgets = new List(); List<Widget> widgets = new List();
for (MenuItem item in menuItems) { for (int i = 0; i < menuItems.length; i++) {
if (item.selectedValue != '') { if (menuItems[i].selectedValue != '') {
widgets.add(getSettingsItem(item)); 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; return widgets;
} }
Widget getSettingsItem(MenuItem item) { Widget getSettingsItem(VoidCallback onPressed, String title, String value) {
return new Container( return new Container(
height: 56.0, height: 56.0,
padding: new EdgeInsets.only(left: 8.0), padding: new EdgeInsets.only(left: 8.0),
child: (new FlatButton( child: (new FlatButton(
onPressed: () => onPressed(menuItems.indexOf(item)), onPressed: onPressed,
child: new Row(children: <Widget>[ child: new Row(children: <Widget>[
new Expanded(child: new Text(item.title, style: new TextStyle( new Expanded(child: new Text(title, style: new TextStyle(
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
color: faqGrey, color: faqGrey,
fontSize: 14.0))), fontSize: 14.0))),
new Text(getCurrencyTitle(int.parse(item.selectedValue)), new Text(value,
style: new TextStyle( style: new TextStyle(
fontWeight: FontWeight.w400, fontWeight: FontWeight.w400,
color: faqGrey, color: faqGrey,
@@ -99,6 +106,8 @@ class SettingsState extends BaseState<SettingsScreen> {
switch (position) { switch (position) {
case 0 : case 0 :
return pushRoute(context, new CurrenciesScreen(helper, app)); return pushRoute(context, new CurrenciesScreen(helper, app));
case 1 :
return pushRoute(context, new LanguagesScreen(helper, app));
} }
} }