From bc092ca8f9f05b1b416bf1e875eaec38159f25b8 Mon Sep 17 00:00:00 2001 From: Ivan Murashov Date: Mon, 11 Sep 2017 16:43:13 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=D0=B5?= =?UTF-8?q?=D1=82=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D0=BE=D0=BD=D0=B0?= =?UTF-8?q?=D0=BB=20=D0=BF=D0=B5=D1=80=D0=B5=D0=BA=D0=BB=D1=8E=D1=87=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F=20=D0=B2=D0=B0=D0=BB=D1=8E=D1=82,=20=D0=BE?= =?UTF-8?q?=D1=81=D1=82=D0=B0=D0=BB=D0=B8=D1=81=D1=8C=20=D0=BF=D1=80=D0=B0?= =?UTF-8?q?=D0=B2=D0=BA=D0=B8=20=D0=BF=D0=BE=20ui?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/base/base_state.dart | 1 - lib/base/settings_base_state.dart | 25 +++++++++++++++---- lib/db.dart | 10 ++++++-- lib/screens/currencies.dart | 19 +++++++++++++-- lib/screens/languages.dart | 16 +++++++++++++ lib/screens/purchase.dart | 40 ++++++++++++++++--------------- 6 files changed, 82 insertions(+), 29 deletions(-) diff --git a/lib/base/base_state.dart b/lib/base/base_state.dart index 13b854a..7e60689 100644 --- a/lib/base/base_state.dart +++ b/lib/base/base_state.dart @@ -41,7 +41,6 @@ abstract class BaseState extends State { } }); } - return getMainWidget(); } diff --git a/lib/base/settings_base_state.dart b/lib/base/settings_base_state.dart index c196fdb..bb857e2 100644 --- a/lib/base/settings_base_state.dart +++ b/lib/base/settings_base_state.dart @@ -5,9 +5,15 @@ import 'package:flutter/material.dart'; abstract class SettingsBaseState extends BaseState { + int selectedItem; + @override Widget getScreenContent() { + print('getScreenContent: $selectedItem'); + getSelectedValue(); + + List widgets = new List(); for (String option in getOptions()) { @@ -19,6 +25,10 @@ abstract class SettingsBaseState extends BaseState List getOptions(); + void saveOption(); + + void getSelectedValue(); + @override List getMenuButtons() { return null; @@ -27,16 +37,21 @@ abstract class SettingsBaseState extends BaseState Widget getItem(String option) { return new Container( height: 56.0, - child: (new FlatButton(onPressed: null, + child: (new FlatButton(onPressed: () { + saveOption(); + setState(() { + selectedItem = getOptions().indexOf(option); + }); + }, child: new Row(children: [ new Expanded(child: new Text(option)), - getCheckMark()])))); + getCheckMark(getOptions().indexOf(option))])))); } - Widget getCheckMark() { - return new Image.asset(check_png, + Widget getCheckMark(int index) { + return index == selectedItem ? new Image.asset(check_png, width: 28.0, - height: 28.0); + height: 28.0) : new Image.asset(check_png, color: new Color(0xffffff)); } @override diff --git a/lib/db.dart b/lib/db.dart index 9dfe716..244ce35 100644 --- a/lib/db.dart +++ b/lib/db.dart @@ -114,9 +114,15 @@ class SqliteHelper { return locale; } - Future getCurrency() async { + Future getCurrency() async { Map settings = await selectAll(tableSettings); - String currency = settings != null ? settings[columnCurrency] : null; + int currency = settings != null ? settings[columnCurrency] : null; + print('currency: {$currency}'); + return currency; + } + + Future saveCurrency(int currency) async { + db.update(tableSettings, {columnCurrency: currency}); print('currency: {$currency}'); return currency; } diff --git a/lib/screens/currencies.dart b/lib/screens/currencies.dart index 9280650..737a54f 100644 --- a/lib/screens/currencies.dart +++ b/lib/screens/currencies.dart @@ -1,8 +1,7 @@ import 'package:checker/base/settings_base_state.dart'; import 'package:flutter/material.dart'; -import 'package:checker/consts.dart'; import 'package:checker/strings.dart'; -import 'package:checker/base/base_state.dart'; +import 'package:checker/common.dart'; class CurrenciesScreen extends StatefulWidget { @override State createState() => new _CurrenciesState(); @@ -10,6 +9,8 @@ class CurrenciesScreen extends StatefulWidget { class _CurrenciesState extends SettingsBaseState { + List currencies = const [643, 840, 980]; + @override List getOptions() { @@ -20,8 +21,22 @@ class _CurrenciesState extends SettingsBaseState { return [ruble, dollar, hryvna]; } + @override + void getSelectedValue() { + helper.getCurrency().then((currency) { + setState(() { + selectedItem = currencies.indexOf(currency); + }); + }); + } + @override String getTitle() { return StringsLocalization.settings(); } + + @override + saveOption() async { + await helper.saveCurrency(currencies[selectedItem]); + } } \ No newline at end of file diff --git a/lib/screens/languages.dart b/lib/screens/languages.dart index 1ec61b6..94eb3b4 100644 --- a/lib/screens/languages.dart +++ b/lib/screens/languages.dart @@ -2,6 +2,7 @@ import 'package:checker/base/settings_base_state.dart'; import 'package:flutter/material.dart'; import 'package:checker/consts.dart'; import 'package:checker/strings.dart'; +import 'package:checker/common.dart'; class LanguagesScreen extends StatefulWidget { @override State createState() => new _LanguagesState(); @@ -18,4 +19,19 @@ class _LanguagesState extends SettingsBaseState { String getTitle() { return StringsLocalization.locale(); } + + @override + void saveOption() { +// helper.sa(languages[selectedItem]); + } + + @override + void getSelectedValue() { + helper.getLocale().then((locale) { + setState(() { + print(selectedItem); + selectedItem = getOptions().indexOf(getLocaleTitle(locale)); + }); + }); + } } \ No newline at end of file diff --git a/lib/screens/purchase.dart b/lib/screens/purchase.dart index d465493..e49a70d 100644 --- a/lib/screens/purchase.dart +++ b/lib/screens/purchase.dart @@ -203,29 +203,31 @@ class PurchaseScreenState extends BaseState { String url = user['purchases_url']; - var body = { - 'doc_id': result, - 'curr_iso_code': '643', - 'commit': 'true', - 'sum_total': sumTotal - }; + helper.getCurrency().then((currency) { + var body = { + 'doc_id': result, + 'curr_iso_code': currency.toString(), + 'commit': 'true', + 'sum_total': sumTotal + }; - var headers = { - 'DM-Authorization': 'dmapptoken $appToken', - 'Authorization': 'dmtoken ${token}' - }; + var headers = { + 'DM-Authorization': 'dmapptoken $appToken', + 'Authorization': 'dmtoken ${token}' + }; - httpClient.post(url, body: body, headers: headers).then((response) { + httpClient.post(url, body: body, headers: headers).then((response) { - print(response.body); - helper.close().then((_) { - Navigator.of(context).pop(); - pushRouteReplacement(context, new PurchaseSuccessScreen(sumTotal, user['first_name'] == null ? '' : user['first_name'])); + print(response.body); + helper.close().then((_) { + Navigator.of(context).pop(); + pushRouteReplacement(context, new PurchaseSuccessScreen(sumTotal, user['first_name'] == null ? '' : user['first_name'])); + }); + + }).catchError((error) { + purchaseInProgress = false; + print(error.toString()); }); - - }).catchError((error) { - purchaseInProgress = false; - print(error.toString()); }); }); }