Работает функционал переключения валют, остались правки по ui

This commit is contained in:
Ivan Murashov
2017-09-11 16:43:13 +03:00
parent e492a3a146
commit bc092ca8f9
6 changed files with 82 additions and 29 deletions

View File

@@ -41,7 +41,6 @@ abstract class BaseState<T extends StatefulWidget> extends State<T> {
} }
}); });
} }
return getMainWidget(); return getMainWidget();
} }

View File

@@ -5,9 +5,15 @@ import 'package:flutter/material.dart';
abstract class SettingsBaseState<T extends StatefulWidget> extends BaseState<T> { abstract class SettingsBaseState<T extends StatefulWidget> extends BaseState<T> {
int selectedItem;
@override @override
Widget getScreenContent() { Widget getScreenContent() {
print('getScreenContent: $selectedItem');
getSelectedValue();
List<Widget> widgets = new List(); List<Widget> widgets = new List();
for (String option in getOptions()) { for (String option in getOptions()) {
@@ -19,6 +25,10 @@ abstract class SettingsBaseState<T extends StatefulWidget> extends BaseState<T>
List<String> getOptions(); List<String> getOptions();
void saveOption();
void getSelectedValue();
@override @override
List<Widget> getMenuButtons() { List<Widget> getMenuButtons() {
return null; return null;
@@ -27,16 +37,21 @@ abstract class SettingsBaseState<T extends StatefulWidget> extends BaseState<T>
Widget getItem(String option) { Widget getItem(String option) {
return new Container( return new Container(
height: 56.0, height: 56.0,
child: (new FlatButton(onPressed: null, child: (new FlatButton(onPressed: () {
saveOption();
setState(() {
selectedItem = getOptions().indexOf(option);
});
},
child: new Row(children: <Widget>[ child: new Row(children: <Widget>[
new Expanded(child: new Text(option)), new Expanded(child: new Text(option)),
getCheckMark()])))); getCheckMark(getOptions().indexOf(option))]))));
} }
Widget getCheckMark() { Widget getCheckMark(int index) {
return new Image.asset(check_png, return index == selectedItem ? new Image.asset(check_png,
width: 28.0, width: 28.0,
height: 28.0); height: 28.0) : new Image.asset(check_png, color: new Color(0xffffff));
} }
@override @override

View File

@@ -114,9 +114,15 @@ class SqliteHelper {
return locale; return locale;
} }
Future<String> getCurrency() async { Future<int> getCurrency() async {
Map settings = await selectAll(tableSettings); 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<int> saveCurrency(int currency) async {
db.update(tableSettings, {columnCurrency: currency});
print('currency: {$currency}'); print('currency: {$currency}');
return currency; return currency;
} }

View File

@@ -1,8 +1,7 @@
import 'package:checker/base/settings_base_state.dart'; import 'package:checker/base/settings_base_state.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:checker/consts.dart';
import 'package:checker/strings.dart'; import 'package:checker/strings.dart';
import 'package:checker/base/base_state.dart'; import 'package:checker/common.dart';
class CurrenciesScreen extends StatefulWidget { class CurrenciesScreen extends StatefulWidget {
@override State createState() => new _CurrenciesState(); @override State createState() => new _CurrenciesState();
@@ -10,6 +9,8 @@ class CurrenciesScreen extends StatefulWidget {
class _CurrenciesState extends SettingsBaseState<CurrenciesScreen> { class _CurrenciesState extends SettingsBaseState<CurrenciesScreen> {
List<int> currencies = const [643, 840, 980];
@override @override
List<String> getOptions() { List<String> getOptions() {
@@ -20,8 +21,22 @@ class _CurrenciesState extends SettingsBaseState<CurrenciesScreen> {
return [ruble, dollar, hryvna]; return [ruble, dollar, hryvna];
} }
@override
void getSelectedValue() {
helper.getCurrency().then((currency) {
setState(() {
selectedItem = currencies.indexOf(currency);
});
});
}
@override @override
String getTitle() { String getTitle() {
return StringsLocalization.settings(); return StringsLocalization.settings();
} }
@override
saveOption() async {
await helper.saveCurrency(currencies[selectedItem]);
}
} }

View File

@@ -2,6 +2,7 @@ import 'package:checker/base/settings_base_state.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';
class LanguagesScreen extends StatefulWidget { class LanguagesScreen extends StatefulWidget {
@override State createState() => new _LanguagesState(); @override State createState() => new _LanguagesState();
@@ -18,4 +19,19 @@ class _LanguagesState extends SettingsBaseState<LanguagesScreen> {
String getTitle() { String getTitle() {
return StringsLocalization.locale(); 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));
});
});
}
} }

View File

@@ -203,29 +203,31 @@ class PurchaseScreenState<T> extends BaseState<PurchaseScreen> {
String url = user['purchases_url']; String url = user['purchases_url'];
var body = { helper.getCurrency().then((currency) {
'doc_id': result, var body = {
'curr_iso_code': '643', 'doc_id': result,
'commit': 'true', 'curr_iso_code': currency.toString(),
'sum_total': sumTotal 'commit': 'true',
}; 'sum_total': sumTotal
};
var headers = { var headers = {
'DM-Authorization': 'dmapptoken $appToken', 'DM-Authorization': 'dmapptoken $appToken',
'Authorization': 'dmtoken ${token}' 'Authorization': 'dmtoken ${token}'
}; };
httpClient.post(url, body: body, headers: headers).then((response) { httpClient.post(url, body: body, headers: headers).then((response) {
print(response.body); print(response.body);
helper.close().then((_) { helper.close().then((_) {
Navigator.of(context).pop(); Navigator.of(context).pop();
pushRouteReplacement(context, new PurchaseSuccessScreen(sumTotal, user['first_name'] == null ? '' : user['first_name'])); 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());
}); });
}); });
} }