import 'package:flutter/services.dart'; import 'package:flutter/material.dart'; import 'dart:async'; import 'dart:convert'; import 'main.dart'; import 'registration.dart'; import 'activate_token.dart'; import 'purchase.dart'; class SplashScreen extends StatelessWidget { @override Widget build(BuildContext context) { // Появляется splash screen, проверяется токен. new Future.delayed(const Duration(milliseconds: 500), () { showNextScreen(context); // startScanner(context); // pushRoute(context, new PurchaseScreen(null)); }); return new Stack(children: [new Container(padding: new EdgeInsets.only(left: 48.0, right: 48.0), decoration: getSplashBg()), new Align(alignment: FractionalOffset.bottomRight, child: new Container(margin: new EdgeInsets.only(right: 11.0, bottom: 5.0), child: new Image.asset(powered_by_dinect_splash_png, height: 16.0, width: 122.0)))]); } Decoration getSplashBg() { return new BoxDecoration(image: new DecorationImage( image: new ExactAssetImage(splash_png), fit: BoxFit.cover)); } /// Запуск следующего экрана приложения. showNextScreen(BuildContext context) async { token = await platform.invokeMethod('getToken'); print('token: $token'); // В случае, если в приложении отсутствует токен, // необходимо запустить регистрацию кассы. if (token == null) { pushRoute(context, new RegistrationScreen()); } else { checkToken(context).then((response) { print(response.body); Map parsedMap = JSON.decode(response.body); bool active = parsedMap['active']; if (active) { // Запускается экран сканера, токен кассы активирован, с его помощью можно делать запросы к pos-api. startScanner(context); } else { // Запускается экран ожидания активации токена. // В реальности токен активируется в админке вручную, // на тестовом сервере токен активируется через несколько минут после создания. pushRoute(context, new FinishRegistrationScreen()); } }).catchError((error) { print(error.toString()); return false; }); } } }