Камера не падает, проверка интернет соединения в условиях отсутствия интернета, буквенная клавиатура на вводе суммы

This commit is contained in:
Ivan Murashov
2017-07-28 16:39:37 +03:00
parent ddd9caeba1
commit e53ceb9ef0
11 changed files with 425 additions and 242 deletions

View File

@@ -11,6 +11,8 @@ abstract class BaseState<T> extends State<T> {
String error = null;
String textFieldValue = '';
TextEditingController controller = new TextEditingController();
@override Widget build(BuildContext context) {
return new Scaffold(appBar: getAppBar(context), body: getBody(context));
}

View File

@@ -79,13 +79,15 @@ class FAQScreenState<T> extends BaseState<FAQScreen> {
new Entry('ОБЩАЯ ИНФОРМАЦИЯ', commonGuide)
];
static const String registrationGuide = '''После запуска приложения вы окажетесь на странице регистрации магазина.
static const String registrationGuide = '''
mPreviewing = true;После запуска приложения вы окажетесь на странице регистрации магазина.
Введите DIN код магазина (выдается партнером/менеджером International Auto Club, дублируется на почту)
Нажать кнопку: «Зарегистрировать»
Дождитесь подтверждение активации программы, нажатием кнопки “Обновите статус активации обновите статус.
После подтверждения запроса на активацию программы Партнером/менеджером нажмите кнопкиопку “Завершить регистрацию, приложение готово к использованию.
Кликнете по кнопке: «Зарегистрировать»
Дождитесь подтверждение активации программы, кликом по кнопке «Обновите статус активации» обновите статус.
После подтверждения запроса на активацию программы Партнером/менеджером кликнете по кнопке «Завершить регистрацию», приложение готово к использованию.
В случае желания изменить номер кассы, необходимо нажать на значек” верхнем правом углу и вернуться на шаг регистрации.''';
При желании изменить номер кассы, необходимо кликнуть на «значок» верхнем правом углу и вернуться на шаг регистрации.
''';
static const String usageGuide = '''Действие 1:
При предъявлении покупателем штрих кода участника системы лояльности, запустите данное приложение.

View File

@@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'dart:convert';
import 'dart:async';
import 'dart:core';
import 'main.dart';
import 'common.dart';
@@ -23,9 +24,12 @@ class PurchaseScreen extends StatefulWidget {
class PurchaseScreenState<T> extends BaseState<PurchaseScreen> {
RegExp exp;
PurchaseScreenState(String userString, String card) {
this.user = JSON.decode(userString);
this.card = card;
exp = new RegExp(r'''^(?!0\.00)\d{1,11}(\.\d{0,2})?$''');
getLoyality(user['loyalty_url']);
}
@@ -65,30 +69,36 @@ class PurchaseScreenState<T> extends BaseState<PurchaseScreen> {
/// Смена состояния экрана при изменении текста в поле ввода.
@override handleUserInput(String tmpString) {
setState(() {
double.parse(tmpString);
tmpString = tmpString.replaceAll('-', '');
tmpString = tmpString.replaceAll(',', '');
print(tmpString);
if (tmpString.contains('.')) {
int dotIndex = tmpString.indexOf('.');
integerPart = tmpString.substring(0, dotIndex);
fractionalPart = tmpString.substring(dotIndex + 1, tmpString.length);
if (fractionalPart.length > 2) {
fractionalPart = fractionalPart.substring(0, 2);
if (tmpString.length == 0 || exp.hasMatch(tmpString)) {
if (tmpString.contains('.')) {
int dotIndex = tmpString.indexOf('.');
integerPart = tmpString.substring(0, dotIndex);
fractionalPart = tmpString.substring(dotIndex + 1, tmpString.length);
if (fractionalPart.length > 2) {
fractionalPart = fractionalPart.substring(0, 2);
}
controller.text = '${integerPart}.${fractionalPart}';
} else {
integerPart = tmpString;
controller.text = tmpString;
}
controller.text = '${integerPart}.${fractionalPart}';
textFieldValue = tmpString;
} else {
integerPart = tmpString;
controller.text = tmpString;
tmpString = tmpString.substring(0, tmpString.length - 1);
controller.text = tmpString.replaceAll('a', '');
textFieldValue = tmpString;
}
textFieldValue = tmpString;
});
}
@override getTextWidget() {
return new TextField(decoration: new InputDecoration.collapsed(hintText: getHint(),
return new TextField(keyboardType: TextInputType.text, decoration: new InputDecoration.collapsed(hintText: getHint(),
hintStyle: new TextStyle(color: greyTextColor, fontSize: 16.0)),
controller: controller,
onChanged: (text) => handleUserInput(text));
}
@@ -136,6 +146,10 @@ class PurchaseScreenState<T> extends BaseState<PurchaseScreen> {
temporaryFractional = temporaryFractional + '0';
}
if (temporaryInteger.length == 0) {
temporaryInteger = '0';
}
return temporaryInteger + '.' + temporaryFractional;
}