Line data Source code
1 : import 'dart:async'; 2 : 3 : import 'package:flutter/foundation.dart'; 4 : import 'package:flutter_secure_storage/flutter_secure_storage.dart'; 5 : import 'package:flutter_secure_storage_platform_interface/flutter_secure_storage_platform_interface.dart'; 6 : 7 : /// Providing an interface to store User Credentials across sessions 8 : abstract class AuthenticationStorage { 9 : /// Saves [credential] 10 : /// You should not change [credential] 11 : /// If [credential] is `null` it means the credential is invalid and should be deleted 12 : FutureOr<void> saveCredential(String? credential); 13 : 14 : /// Called to return the credential 15 : /// This should return an unmodified version of the credential received via `saveCredential` 16 : FutureOr<String?> get credential; 17 : } 18 : 19 : /// Implementation of [AuthenticationStorage] based on [flutter_secure_storage](https://pub.dev/packages/flutter_secure_storage) 20 : class FlutterSecureStorageCredentialStorage implements AuthenticationStorage { 21 : /// Creates a new AuthenticationStorage 22 17 : const FlutterSecureStorageCredentialStorage(); 23 : 24 : static const _credentialKey = 'ApptiveGridCredential'; 25 : 26 : final _flutterSecureStorage = const FlutterSecureStorage( 27 : aOptions: AndroidOptions( 28 : encryptedSharedPreferences: true, 29 : ), 30 : ); 31 : 32 1 : @override 33 2 : FutureOr<String?> get credential => _flutterSecureStorage.read(key: _credentialKey); 34 : 35 1 : @override 36 : FutureOr<void> saveCredential(String? credential) { 37 2 : _flutterSecureStorage.write(key: _credentialKey, value: credential); 38 : } 39 : }