diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 66ee409..a50d756 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -2,7 +2,7 @@ + android:versionName="1.1.2"> extends State { break; } case 1: { - pushRoute(context, new FAQScreen(false)); + pushRoute(context, new FAQScreen(helper, app, false)); break; } case 2: { diff --git a/lib/common.dart b/lib/common.dart index 6d8bfe2..a04ae94 100644 --- a/lib/common.dart +++ b/lib/common.dart @@ -26,8 +26,8 @@ pushRoute(BuildContext context, Widget widget) { } // Добавление route, с возможностью вернуться к предыдущему экрану. -faq(BuildContext context, bool returnToScanner) { - pushRoute(context, new FAQScreen(returnToScanner)); +faq(SqliteHelper helper, String app, BuildContext context, bool returnToScanner) { + pushRoute(context, new FAQScreen(helper, app, returnToScanner)); } // В методе отправляется запрос на удаление токена кассы, очищаются SharedPreferences приложения. @@ -93,7 +93,7 @@ startScanner(BuildContext context, String app, SqliteHelper helper) async { if (call.method == 'logout') { forceLogout(token, context); } else if (call.method == 'faq') { - faq(context, true); + faq(helper, app, context, true); } else if(call.method == 'settings') { if (helper == null) { helper = new SqliteHelper(); @@ -108,8 +108,7 @@ startScanner(BuildContext context, String app, SqliteHelper helper) async { String card = call.arguments[1]; var route = new MaterialPageRoute( builder: (BuildContext context) => - new PurchaseScreen( - userString, card)); + new PurchaseScreen(helper, app, userString, card)); while (Navigator.of(context).canPop()) { Navigator.of(context).pop(); } diff --git a/lib/consts.dart b/lib/consts.dart index 074c52b..796f772 100644 --- a/lib/consts.dart +++ b/lib/consts.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; -const String appName = "Autobonus"; +const String appName = "PIP"; // Assets const String logout_png = 'assets/logout.png'; diff --git a/lib/screens/faq.dart b/lib/screens/faq.dart index a7c2d41..408f736 100644 --- a/lib/screens/faq.dart +++ b/lib/screens/faq.dart @@ -1,5 +1,7 @@ import 'dart:async'; +import 'package:checker/base/base_screen.dart'; +import 'package:checker/db.dart'; import 'package:checker/resources.dart'; import 'package:checker/strings.dart'; import 'package:flutter/material.dart'; @@ -62,17 +64,22 @@ class EntryItem extends StatelessWidget { } } -class FAQScreen extends StatefulWidget { +class FAQScreen extends BaseScreen { - FAQScreen(this.b); - final bool b; + FAQScreen(SqliteHelper helper, String app, + this.returnToScanner) : super(helper, app); - @override State createState() => new FAQScreenState(b); + final bool returnToScanner; + + @override State createState() => new FAQScreenState(returnToScanner, helper, app); } class FAQScreenState extends BaseState { - FAQScreenState(this.returnToScanner); + FAQScreenState(this.returnToScanner, SqliteHelper helper, String app) { + this.helper = helper; + this.app = app; + } bool returnToScanner; @@ -87,7 +94,7 @@ class FAQScreenState extends BaseState { } @override Widget build(BuildContext context) { - if (app == null) { + if (data == null) { platform.invokeMethod('getFlavor').then((flavor) { initPhoneAndUrl().then((_) { setState(() { diff --git a/lib/screens/purchase.dart b/lib/screens/purchase.dart index 328413e..6e31c89 100644 --- a/lib/screens/purchase.dart +++ b/lib/screens/purchase.dart @@ -1,3 +1,4 @@ +import 'package:checker/base/base_screen.dart'; import 'package:checker/db.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; @@ -13,14 +14,15 @@ import 'package:checker/base/base_state.dart'; import 'package:checker/screens/purchase_success.dart'; /// Экран проведения покупки. -class PurchaseScreen extends StatefulWidget { - PurchaseScreen(this.user, this.card); +class PurchaseScreen extends BaseScreen { + + PurchaseScreen(helper, app, this.user, this.card) : super(helper, app); final String user; final String card; @override - State createState() => new PurchaseScreenState(user, card); + State createState() => new PurchaseScreenState(helper, app, user, card); } class PurchaseScreenState extends BaseState { @@ -29,9 +31,11 @@ class PurchaseScreenState extends BaseState { /// (удаляет запрещенные символы до их отображаения). TextEditingController controller = new TextEditingController(); - PurchaseScreenState(String userString, String card) { + PurchaseScreenState(SqliteHelper helper, String app, String userString, String card) { this.user = JSON.decode(userString); this.card = card; + this.helper = helper; + this.app = app; } @override @@ -62,18 +66,18 @@ class PurchaseScreenState extends BaseState { return new Column(children: [ new Expanded( child: new ListView(children: [ - getValueWithDescription(StringsLocalization.buyer(), - user['first_name'] == null ? '' : user['first_name']), - getValueWithDescription(StringsLocalization.card(), card), - getValueWithDescription(StringsLocalization.reward(), loyalty), - getHintLabel(), - getInputField(), - wrapButton(getScreenMargins(36.0), getCompleteButton()), - wrapButton( - getScreenMargins(24.0), - getScanButton(context, StringsLocalization.scan(), - Resources.getPrimaryColor(app))) - ])) + getValueWithDescription(StringsLocalization.buyer(), + user['first_name'] == null ? '' : user['first_name']), + getValueWithDescription(StringsLocalization.card(), card), + getValueWithDescription(StringsLocalization.reward(), loyalty), + getHintLabel(), + getInputField(), + wrapButton(getScreenMargins(36.0), getCompleteButton()), + wrapButton( + getScreenMargins(24.0), + getScanButton(context, StringsLocalization.scan(), + Resources.getPrimaryColor(app))) + ])) ]); } @@ -185,7 +189,7 @@ class PurchaseScreenState extends BaseState { child: new AlertDialog( title: new Text(StringsLocalization.confirmation()), content: - new Text(StringsLocalization.confirmPurchase(val, currency)), + new Text(StringsLocalization.confirmPurchase(val, currency)), actions: [ new FlatButton( child: new Text(StringsLocalization.no()), @@ -254,7 +258,7 @@ class PurchaseScreenState extends BaseState { this.loyalty = '${user['discount']}%'; } else { double loyaltyVal = (double.parse(bonuses['amount_to_bonus'][1]) / - bonuses['amount_to_bonus'][0]) * 100; + bonuses['amount_to_bonus'][0]) * 100; this.loyalty = '${loyaltyVal.toStringAsFixed(0)}%'; } } diff --git a/lib/screens/settings.dart b/lib/screens/settings.dart index c432033..58f1ee7 100644 --- a/lib/screens/settings.dart +++ b/lib/screens/settings.dart @@ -28,7 +28,10 @@ class MenuItem { class SettingsState extends BaseState { - List menuItems; + List menuItems = [ + new MenuItem('', ''), + new MenuItem('', '') + ]; bool returnToScanner; @@ -39,22 +42,14 @@ class SettingsState extends BaseState { } @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(); - }); + 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()); } @@ -77,16 +72,11 @@ class SettingsState extends BaseState { List getSettings() { List 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))); - } + 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; @@ -115,10 +105,8 @@ class SettingsState extends BaseState { 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)); } }