import 'dart:async'; import 'package:flutter/widgets.dart'; import 'package:flutter_secure_storage/flutter_secure_storage.dart'; import '../log/log.dart'; class TokenT { String token; String domain; String videoPath; String tvPath; TokenT(this.token, this.domain, this.videoPath, this.tvPath); } class Token { static final Token _token = Token._(); final _storage = const FlutterSecureStorage(); String _tokenval = ""; String _domain = ""; String _vPath = ""; String _tvPath = ""; static Token getInstance() { return _token; } Future getToken() async { if (_tokenval == "" || _domain == "" || _vPath == "") { Log.d("reading token store"); WidgetsFlutterBinding.ensureInitialized(); final token = await _storage.read(key: 'jwt'); final domain = await _storage.read(key: 'domain'); // todo paths should be loaded on each app start final vPath = await _storage.read(key: 'videoPath'); final tvPath = await _storage.read(key: 'tvPath'); // check if value is defined in phone store if (token != null && domain != null && vPath != null) { _tokenval = token; _domain = domain; return TokenT(token, domain, vPath, tvPath ?? ""); } else { Log.d("no token defined"); return null; } } else { return TokenT(_tokenval, _domain, _vPath, _tvPath); } } void setToken(String token, String domain, String videoPath, String tvPath) { _tokenval = token; _domain = domain; _vPath = videoPath; _tvPath = tvPath; _storage.write(key: 'jwt', value: token); _storage.write(key: 'domain', value: domain); _storage.write(key: 'videoPath', value: videoPath); _storage.write(key: 'tvPath', value: tvPath); } Token._(); }