Files
checker/lib/registration.dart

108 lines
4.0 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'dart:convert'; // Пакет для обработки json с ответом от сервера.
import 'dart:async';
import 'main.dart';
import 'activate_token.dart';
import 'base_state.dart';
/// На фото мой сын, большой любитель голых констант.
/// Экран регистрации магазина и кассы.
class RegistrationScreen extends StatefulWidget {
@override State createState() => new _RegistrationScreenState();
}
class _RegistrationScreenState extends BaseState<RegistrationScreen> {
@override String getTitle() {
return "Регистрация";
}
@override getHint() {
return 'ID магазина';
}
@overide getMenuButtons(BuildContext context) {
return <Widget>[new IconButton(icon: new Icon(Icons.help_outline), onPressed: () {})];
}
/// Высота контейнера задана для того, чтобы элементы располагались вверху экрана
/// и список скроллился снизу вверх при открытии клавиатуры.
@override Widget getScreenContent() {
return new Container(height: 332.0,
child: new ListView(reverse: true, children: <Widget>[
new Center(child: new Column(children: <Widget>[
getLogo(),
getHintLabel(),
getDecoratedTextWidget(),
buildButton(new EdgeInsets.only(top: 36.0, left: buttonVerticalMargin, right: buttonVerticalMargin),
buildRaisedButton(context, 'ЗАРЕГИСТРИРОВАТЬ', _isValidMerchantID() && !loading ? () => _registerShop(context) : null))]))
].reversed.toList()));
}
/// Токен кассы - это DIN код. DIN код - это специальный код динекта, максимальная его длина - 25 символов.
_isValidMerchantID() {
print("${textFieldValue.length}");
return textFieldValue.length > 0 && textFieldValue.length < 25;
}
/// Показать индикатор, запросить токен.
_registerShop(BuildContext context) {
setState(() {
loading = true;
_register(context);
});
}
/// Экран зависает на 1 сек, после этого выполняется переход на экран потверждения токена.
_registerDemo(BuildContext context) {
new Future.delayed(const Duration(milliseconds: 1000), () {
loading = false;
pushRoute(context, new FinishRegistrationScreen());
});
}
/// Получение от платформы id установки, формирование запроса на получение токена, сохранение токена.
_register(BuildContext context) async {
String url = intUrl + 'tokens/?_dmapptoken=' + intToken;
String pos = (new DateTime.now().millisecondsSinceEpoch / 1000).toString();
// Поле description - необязательное.
var body = {
'merchant_shop': textFieldValue,
'pos': pos,
};
pushRoute(context, new FinishRegistrationScreen());
// httpClient.post(url, body: body).then((response) {
setState(() {
error = null;
});
// print(response.body);
// Map parsedMap = JSON.decode(response.body);
// setState(() {
// loading = false;
// });
// if (response.statusCode == 201) {
// token = parsedMap['token'];
// platform.invokeMethod('saveToken', {'token' : token});
// platform.invokeMethod('saveMerchantID', {'merchantID' : merchantID});
// pushRoute(context, new FinishRegistrationScreen());
// } else {
// setState(() {
// error = parsedMap['errors'][0];
// });
// }
// }).catchError((error) {
// setState(() {
// error = 'Отсутствует интернет соединение';
// });
// });
}
}