RG-3443 Экран настроек локализации
This commit is contained in:
@@ -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';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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'
|
|
||||||
];
|
|
||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user