Камера не падает, проверка интернет соединения в условиях отсутствия интернета, буквенная клавиатура на вводе суммы
This commit is contained in:
@@ -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));
|
||||
}
|
||||
|
||||
12
lib/faq.dart
12
lib/faq.dart
@@ -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:
|
||||
При предъявлении покупателем штрих кода участника системы лояльности, запустите данное приложение.
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user