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 скрин зависает мимнимум на 1 секунду. // После этого начинается проверка токена. new Future.delayed(const Duration(milliseconds: 1000), () { pushRoute(context, new PurchaseScreen()); // _showNextScreen(context); }); return new Image.asset(splash_png, fit: BoxFit.cover); } /// Запуск следующего экрана приложения. _showNextScreen(BuildContext context) async { const platform = const MethodChannel('com.dinect.checker/instance_id'); 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; }); } } }