143 lines
4.0 KiB
Dart
143 lines
4.0 KiB
Dart
import 'package:checker/base/base_screen.dart';
|
|
import 'package:checker/base/base_state.dart';
|
|
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';
|
|
import 'package:intl/intl.dart';
|
|
|
|
class SettingsScreen extends BaseScreen {
|
|
|
|
final bool returnToScanner;
|
|
|
|
SettingsScreen(helper, app, this.returnToScanner) : super(helper, app);
|
|
|
|
@override State createState() => new SettingsState(helper, app, returnToScanner);
|
|
}
|
|
|
|
class MenuItem {
|
|
|
|
// Заголовок пункта меню и выбранное значение.
|
|
String title, selectedValue;
|
|
|
|
MenuItem(this.title, this.selectedValue);
|
|
}
|
|
|
|
class SettingsState extends BaseState<SettingsScreen> {
|
|
|
|
List<MenuItem> menuItems;
|
|
|
|
bool returnToScanner;
|
|
|
|
SettingsState(SqliteHelper helper, String app, bool returnToScanner) {
|
|
this.helper = helper;
|
|
this.app = app;
|
|
this.returnToScanner = returnToScanner;
|
|
}
|
|
|
|
@override Widget build(BuildContext ctx) {
|
|
if (menuItems == null) {
|
|
menuItems = [
|
|
new MenuItem('', ''),
|
|
new MenuItem('', '')
|
|
];
|
|
helper.getSettings().then((info) {
|
|
setState(() {
|
|
menuItems[0].title = StringsLocalization.currency();
|
|
menuItems[1].title = StringsLocalization.locale();
|
|
menuItems[0].selectedValue = info['currency'].toString();
|
|
menuItems[1].selectedValue =
|
|
info['locale'] == null ? Intl.defaultLocale : info['locale']
|
|
.toString();
|
|
});
|
|
});
|
|
}
|
|
return new WillPopScope(onWillPop: onWillPop, child: getMainWidget());
|
|
}
|
|
|
|
Widget getMainWidget() {
|
|
return new Scaffold(appBar: getAppBar(),
|
|
body: getScreenContent());
|
|
}
|
|
|
|
@override
|
|
Widget getScreenContent() {
|
|
return new Container(
|
|
margin: new EdgeInsets.only(top: 16.0),
|
|
child: new ListView(children: getSettings()));
|
|
}
|
|
|
|
@override
|
|
List<Widget> getMenuButtons() {
|
|
return null;
|
|
}
|
|
|
|
List<Widget> getSettings() {
|
|
List<Widget> widgets = new List();
|
|
if (menuItems != null) {
|
|
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(VoidCallback onPressed, String title, String value) {
|
|
return new Container(
|
|
height: 56.0,
|
|
padding: new EdgeInsets.only(left: 8.0),
|
|
child: (new FlatButton(
|
|
onPressed: onPressed,
|
|
child: new Row(children: <Widget>[
|
|
new Expanded(child: new Text(title, style: new TextStyle(
|
|
fontWeight: FontWeight.w600,
|
|
color: faqGrey,
|
|
fontSize: 14.0))),
|
|
new Text(value,
|
|
style: new TextStyle(
|
|
fontWeight: FontWeight.w400,
|
|
color: faqGrey,
|
|
fontSize: 14.0)),
|
|
getArrow()
|
|
]))));
|
|
}
|
|
|
|
void onPressed(int position) {
|
|
switch (position) {
|
|
case 0 :
|
|
menuItems = null;
|
|
return pushRoute(context, new CurrenciesScreen(helper, app));
|
|
case 1 :
|
|
menuItems = null;
|
|
return pushRoute(context, new LanguagesScreen(helper, app));
|
|
}
|
|
}
|
|
|
|
Widget getArrow() {
|
|
return new Container(margin: new EdgeInsets.only(left: 8.0),
|
|
child: new Image.asset(settings_arrow_png, height: 42.0));
|
|
}
|
|
|
|
@override
|
|
String getTitle() {
|
|
return StringsLocalization.settings();
|
|
}
|
|
|
|
onWillPop() {
|
|
if(returnToScanner) {
|
|
return startScanner(context, app, helper);
|
|
} else {
|
|
return true;
|
|
}
|
|
}
|
|
} |