Files
checker/lib/screens/settings.dart

122 lines
3.3 KiB
Dart

import 'dart:async';
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/strings.dart';
import 'package:flutter/material.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 = [new MenuItem(StringsLocalization.currency(), '')];
bool returnToScanner;
SettingsState(SqliteHelper helper, String app, bool returnToScanner) {
this.helper = helper;
this.app = app;
this.returnToScanner = returnToScanner;
}
@override Widget build(BuildContext ctx) {
helper.getSettings().then((info) {
if (menuItems != null) {
if (menuItems[0].selectedValue != info['currency'].toString()) {
setState(() {
menuItems[0].selectedValue = info['currency'].toString();
});
}
}
});
return new WillPopScope(onWillPop: onWillPop, child: getMainWidget());
}
@override
Widget getScreenContent() {
return menuItems == null
? getBackground()
: 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();
for (MenuItem item in menuItems) {
if (item.selectedValue != '') {
widgets.add(getSettingsItem(item));
}
}
return widgets;
}
Widget getSettingsItem(MenuItem item) {
return new Container(
height: 56.0,
padding: new EdgeInsets.only(left: 8.0),
child: (new FlatButton(
onPressed: () => onPressed(menuItems.indexOf(item)),
child: new Row(children: <Widget>[
new Expanded(child: new Text(item.title, style: new TextStyle(
fontWeight: FontWeight.w600,
color: faqGrey,
fontSize: 14.0))),
new Text(getCurrencyTitle(int.parse(item.selectedValue)),
style: new TextStyle(
fontWeight: FontWeight.w400,
color: faqGrey,
fontSize: 14.0)),
getArrow()
]))));
}
void onPressed(int position) {
switch (position) {
case 0 :
return pushRoute(context, new CurrenciesScreen(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;
}
}
}