import 'dart:convert'; import 'package:flutter_secure_storage/flutter_secure_storage.dart'; import 'package:syncrow_app/utils/helpers/decode_base64.dart'; class Token { static const String loginAccessToken = 'access_token'; static const String loginRefreshToken = 'refreshToken'; final String accessToken; final String refreshToken; Token.emptyConstructor() : accessToken = '', refreshToken = ''; bool get accessTokenIsNotEmpty => accessToken.isNotEmpty; Token( this.accessToken, this.refreshToken, ); Token.refreshToken(this.refreshToken) : accessToken = ''; factory Token.fromJson(Map json) { //save token to secure storage var storage = const FlutterSecureStorage(); storage.write(key: loginAccessToken, value: json[loginAccessToken] ?? ''); //create token object ? return Token(json[loginAccessToken] ?? '', json[loginRefreshToken] ?? ''); } Map toJson() => {loginRefreshToken: refreshToken}; Map decodeToken() { final parts = accessToken.split('.'); if (parts.length != 3) { throw Exception('invalid access token'); } final payload = decodeBase64(parts[1]); return json.decode(payload); } }