Сделал возможность переключаться между приложениями и добавлять новые приложения практически не меняя код

This commit is contained in:
Ivan Murashov
2017-09-07 15:35:13 +03:00
parent 8d81fb185d
commit 361bcd48ce
22 changed files with 304 additions and 140 deletions

View File

@@ -3,12 +3,13 @@ import 'package:flutter/services.dart';
import 'dart:convert';
import 'dart:core';
import 'package:checker/strings.dart';
import 'package:checker/common.dart';
import 'package:checker/consts.dart';
import 'package:checker/network.dart';
import 'package:checker/base_state.dart';
import 'package:checker/purchase_success.dart';
import 'resources.dart';
import 'strings.dart';
import 'common.dart';
import 'consts.dart';
import 'network.dart';
import 'base_state.dart';
import 'purchase_success.dart';
/// Экран проведения покупки.
class PurchaseScreen extends StatefulWidget {
@@ -41,15 +42,15 @@ class PurchaseScreenState<T> extends BaseState<PurchaseScreen> {
@override Widget getScreenContent() {
return new Column(
children: <Widget>[new Expanded(child: new ListView(children: <Widget>[
getValueWithDescription(StringsLocalization.userName(), 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(), primaryColor))
]))]);
children: <Widget>[new Expanded(child: new ListView(children: <Widget>[
getValueWithDescription(StringsLocalization.userName(), 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)))
]))]);
}
getScreenMargins(double top) {
@@ -62,16 +63,16 @@ class PurchaseScreenState<T> extends BaseState<PurchaseScreen> {
}
Widget getScanButton(BuildContext context, String title, Color textColor) {
return new Container(height: buttonHeight, child: new FlatButton(child: new Text(title,
style: new TextStyle(color: textColor)),
onPressed: () => startScanner(context)),
decoration: getDecorationForScanButton());
}
getDecorationForScanButton() {
return new BoxDecoration(
border: new Border.all(color: buttonColor, width: 1.0),
borderRadius: new BorderRadius.all(new Radius.circular(4.0)));
return new Container(
height: buttonHeight,
child: new FlatButton(
child: new Text(
title,
style: new TextStyle(color: textColor)),
onPressed: () => startScanner(context, app)),
decoration: new BoxDecoration(
border: new Border.all(color: Resources.getButtonColor(app), width: 1.0),
borderRadius: new BorderRadius.all(new Radius.circular(4.0))));
}
@override String getTitle() {
@@ -88,19 +89,19 @@ class PurchaseScreenState<T> extends BaseState<PurchaseScreen> {
@override getTextWidget() {
return new TextField(
keyboardType: TextInputType.number,
decoration: new InputDecoration.collapsed(
keyboardType: TextInputType.number,
decoration: new InputDecoration.collapsed(
hintText: getHint(),
hintStyle: new TextStyle(color: greyTextColor, fontSize: 16.0)
),
controller: controller,
onSubmitted: (String text) {
setState(() {
controller.text = _parseSum(text);
});
},
textAlign: TextAlign.center,
autofocus: true,
),
controller: controller,
onSubmitted: (String text) {
setState(() {
controller.text = _parseSum(text);
});
},
textAlign: TextAlign.center,
autofocus: true,
);
}
@@ -138,10 +139,10 @@ class PurchaseScreenState<T> extends BaseState<PurchaseScreen> {
String _cleanupNumber(String text){
String tmp = text
.replaceAll(' ', '')
.replaceAll('-', '')
.replaceAll(',', '.')
.replaceAll('..', '.');
.replaceAll(' ', '')
.replaceAll('-', '')
.replaceAll(',', '.')
.replaceAll('..', '.');
while(tmp.indexOf('..') != -1){
tmp = tmp.replaceAll('..', '.');
@@ -175,22 +176,22 @@ class PurchaseScreenState<T> extends BaseState<PurchaseScreen> {
onPurchaseClick() {
String val = _parseSum(controller.text);
showDialog(context: context, child: new AlertDialog(
title: new Text(StringsLocalization.confirmation()),
content: new Text(StringsLocalization.confirmPurchase(val)),
actions: <Widget>[
new FlatButton(
child: new Text(StringsLocalization.no()),
onPressed: () {
Navigator.of(context).pop();
},
),
new FlatButton(
child: new Text(StringsLocalization.yes()),
onPressed: () {
purchase(val);
},
)
]));
title: new Text(StringsLocalization.confirmation()),
content: new Text(StringsLocalization.confirmPurchase(val)),
actions: <Widget>[
new FlatButton(
child: new Text(StringsLocalization.no()),
onPressed: () {
Navigator.of(context).pop();
},
),
new FlatButton(
child: new Text(StringsLocalization.yes()),
onPressed: () {
purchase(val);
},
)
]));
}
purchase(String sumTotal) async {
@@ -201,30 +202,30 @@ class PurchaseScreenState<T> extends BaseState<PurchaseScreen> {
String token = await platform.invokeMethod('getToken');
platform.invokeMethod('getDocID').then((result) {
String url = user['purchases_url'];
String url = user['purchases_url'];
var body = {
'doc_id': result,
'curr_iso_code': '643',
'commit': 'true',
'sum_total': sumTotal
};
var body = {
'doc_id': result,
'curr_iso_code': '643',
'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);
Navigator.of(context).pop();
pushRoute(context, new PurchaseSuccessScreen(sumTotal, user['first_name'] == null ? '' : user['first_name']));
print(response.body);
Navigator.of(context).pop();
pushRoute(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());
});
});
}
}