37 lines
1.0 KiB
Dart
37 lines
1.0 KiB
Dart
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
|
|
|
|
class TokenStorageService {
|
|
// Singleton pattern (optional but usually handy for services)
|
|
TokenStorageService._internal();
|
|
|
|
static final TokenStorageService _instance = TokenStorageService._internal();
|
|
|
|
factory TokenStorageService() => _instance;
|
|
|
|
static const _tokenKey = 'auth_token';
|
|
|
|
// Use const constructor for secure storage
|
|
final FlutterSecureStorage _storage = const FlutterSecureStorage();
|
|
|
|
/// Save or update the token
|
|
Future<void> setToken(String token) async {
|
|
await _storage.write(key: _tokenKey, value: token);
|
|
}
|
|
|
|
/// Retrieve the stored token (null if none)
|
|
Future<String?> getToken() async {
|
|
return _storage.read(key: _tokenKey);
|
|
}
|
|
|
|
/// Delete the token
|
|
Future<void> clearToken() async {
|
|
await _storage.delete(key: _tokenKey);
|
|
}
|
|
|
|
/// Optional: check quickly if a token exists
|
|
Future<bool> hasToken() async {
|
|
final token = await getToken();
|
|
return token != null && token.isNotEmpty;
|
|
}
|
|
}
|