Исправления на экране сканера

This commit is contained in:
Ivan Murashov
2017-07-27 13:35:27 +03:00
parent d0b5b17334
commit 303f3e2ff3
12 changed files with 165 additions and 56 deletions

View File

@@ -44,7 +44,7 @@ class _RegistrationScreenState extends BaseState<FinishRegistrationScreen> {
if (_tokenActive) {
startScanner(context);
} else {
checkTokenStatus(context).then((response) {
checkTokenStatus(token).then((response) {
print(response.body);
Map parsedMap = JSON.decode(response.body);

View File

@@ -27,7 +27,7 @@ abstract class BaseState<T> extends State<T> {
}
getFaqButton() {
return new IconButton(icon: new Icon(Icons.help_outline), onPressed: () => faq(context));
return new IconButton(icon: new Icon(Icons.help_outline), onPressed: () => faq(context, false));
}
getLogoutButton() {

View File

@@ -2,6 +2,7 @@ import 'package:flutter/services.dart';
import 'package:flutter/material.dart';
import 'network.dart';
import 'registration.dart';
import 'purchase.dart';
import 'faq.dart';
@@ -18,8 +19,8 @@ pushRoute(BuildContext context, Widget widget) {
}
// Добавление route, с возможностью вернуться к предыдущему экрану.
faq(BuildContext context) {
var route = new MaterialPageRoute<Null>(builder: (BuildContext context) => new FAQScreen());
faq(BuildContext context, bool returnToScanner) {
var route = new MaterialPageRoute<Null>(builder: (BuildContext context) => new FAQScreen(returnToScanner));
Navigator.of(context).push(route);
}
@@ -28,9 +29,9 @@ logout(BuildContext context) {
VoidCallback positiveCalback = () {
if (token != null) {
deleteToken(token).then((response) async {
deleteToken(token).then((response) {
print(response.body);
await platform.invokeMethod('removeKeys');
platform.invokeMethod('removeKeys');
pushRoute(context, new RegistrationScreen()); // Запускаем регистрацию
}).catchError((error) {
print(error.toString());
@@ -57,35 +58,14 @@ startScanner(BuildContext context) async {
if (call.method == 'logout') {
logout(context);
} else if (call.method == 'faq') {
faq(context);
faq(context, true);
} else {
List usersList = JSON.decode(call.arguments);
print('usersList.length: ${usersList.length}');
if (usersList.length > 0) {
pushRoute(context, new PurchaseScreen(usersList[0], card));
}
// var card = ;
// String url = 'http://pos-api-int.dinect.com/20130701/users/?auto=${card}';
// print('url: ' + url);
// var headers = {
// 'DM-Authorization': 'dmapptoken 9fec83cdca38c357e6b65dbb17514cdd36bf2a08',
// 'Authorization': 'dmtoken ${token}'
// };
// httpClient.get(url, headers: headers).then((response) {
// print(response.body);
// }).catchError((error) {
// print(error.toString());
// });
String userString = call.arguments[0];
print('user: ${userString}');
String card = call.arguments[1];
print('card: ${card}');
var route = new MaterialPageRoute<Null>(builder: (BuildContext context) => new PurchaseScreen(userString, card));
Navigator.of(context).pushReplacement(route);
}
});
}

View File

@@ -3,6 +3,7 @@ import 'package:flutter/services.dart';
import 'base_state.dart';
import 'consts.dart';
import 'common.dart';
/// Класс содержит заголовки и текст блоков FAQ.
class Entry {
@@ -35,11 +36,18 @@ class EntryItem extends StatelessWidget {
}
class FAQScreen extends StatefulWidget {
@override State createState() => new FAQScreenState<FAQScreen>();
FAQScreen(this.b);
bool b;
@override State createState() => new FAQScreenState<FAQScreen>(b);
}
class FAQScreenState<T> extends BaseState<FAQScreen> {
FAQScreenState(this.returnToScanner);
bool returnToScanner;
@override String getTitle() {
return "FAQ";
}
@@ -50,9 +58,17 @@ class FAQScreenState<T> extends BaseState<FAQScreen> {
/// Метод возвращает ListView с блоками faq.
@override Widget getScreenContent() {
return new ListView.builder(
return new WillPopScope(onWillPop: onWillPop, child: new ListView.builder(
itemBuilder: (BuildContext context, int index) => new EntryItem(data[index]),
itemCount: data.length);
itemCount: data.length));
}
onWillPop() {
if(returnToScanner) {
return startScanner(context);
} else {
return true;
}
}
/// Список с контентом
@@ -67,7 +83,7 @@ class FAQScreenState<T> extends BaseState<FAQScreen> {
Введите DIN код магазина (выдается партнером/менеджером International Auto Club, дублируется на почту)
Нажать кнопку: «Зарегистрировать»
Дождитесь подтверждение активации программы, нажатием кнопки “Обновите статус активации” обновите статус.
После подтверждения запроса на активацию программы Партнером/менеджером нажмите кнопку “Завершить регистрацию”, приложение готово к использованию.
После подтверждения запроса на активацию программы Партнером/менеджером нажмите кнопкиопку “Завершить регистрацию”, приложение готово к использованию.
В случае желания изменить номер кассы, необходимо нажать на “значек” верхнем правом углу и вернуться на шаг регистрации.''';

View File

@@ -31,7 +31,7 @@ checkTokenStatus(String token) async {
deleteToken(String token) async {
String url = intUrl + 'tokens/' + token + '?_dmapptoken=' + intToken;
print(url);
return httpClient.delete(url).then();
return httpClient.delete(url);
}
// Удалить токены

View File

@@ -4,24 +4,27 @@ import 'dart:convert';
import 'dart:async';
import 'main.dart';
import 'common.dart';
import 'consts.dart';
import 'network.dart';
import 'base_state.dart';
import 'purchase_success.dart';
/// Экран проведения покупки.
class PurchaseScreen extends StatefulWidget {
PurchaseScreen(this.response, this.card);
PurchaseScreen(this.user, this.card);
Map response;
String user;
String card;
@override State createState() => new PurchaseScreenState<PurchaseScreen>(response, card);
@override State createState() => new PurchaseScreenState<PurchaseScreen>(user, card);
}
class PurchaseScreenState<T> extends BaseState<PurchaseScreen> {
PurchaseScreenState(Map user, String card) {
this.user = user;
PurchaseScreenState(String userString, String card) {
this.user = JSON.decode(userString);
this.card = card;
getLoyality(user['loyalty_url']);
}

View File

@@ -2,6 +2,8 @@ import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'main.dart';
import 'common.dart';
import 'consts.dart';
import 'base_state.dart';
import 'purchase.dart';

View File

@@ -81,9 +81,9 @@ class SplashScreen extends StatelessWidget {
if (response.statusCode == 409) {
pushRoute(context, new FinishRegistrationScreen());
} else {
deleteToken(token).then((response) async {
deleteToken(token).then((response) {
print(response.body);
await platform.invokeMethod('removeKeys');
platform.invokeMethod('removeKeys');
Navigator.of(context).pop(); // Убираем текущий route
pushRoute(context, new RegistrationScreen()); // Запускаем регистрацию
}).catchError((error) {