File tree Expand file tree Collapse file tree 5 files changed +132
-0
lines changed
Expand file tree Collapse file tree 5 files changed +132
-0
lines changed Original file line number Diff line number Diff line change 1+ import 'package:flutter_secure_storage/flutter_secure_storage.dart' ;
2+
3+ class FlutterSecureStorageProvider {
4+ FlutterSecureStorage ? _storage;
5+
6+ FlutterSecureStorage getStorage () {
7+ _storage ?? = _createStorage ();
8+ return _storage! ;
9+ }
10+
11+ FlutterSecureStorage _createStorage () {
12+ return const FlutterSecureStorage (
13+ aOptions: AndroidOptions (
14+ encryptedSharedPreferences: true ,
15+ ),
16+ );
17+ }
18+ }
Original file line number Diff line number Diff line change 1+ enum SecureStorageKey {
2+ apiToken,
3+ }
4+
5+ extension SecureStorageKeyExt on SecureStorageKey {
6+ String get string {
7+ switch (this ) {
8+ case SecureStorageKey .apiToken:
9+ return 'API_TOKEN_KEY' ;
10+ }
11+ }
12+ }
13+
14+ abstract class SecureStorageModel {}
15+
16+ enum SecureStorageError {
17+ failToRead,
18+ failToParse,
19+ }
20+
21+ abstract class SecureStorage {
22+ Future <void > save <M extends SecureStorageModel >(
23+ {required M value, required SecureStorageKey key});
24+ Future <M > get <M extends SecureStorageModel >(
25+ {required String value, required SecureStorageKey key});
26+ }
Original file line number Diff line number Diff line change 1+ import 'dart:convert' ;
2+
3+ import 'package:flutter_riverpod/flutter_riverpod.dart' ;
4+ import 'package:flutter_secure_storage/flutter_secure_storage.dart' ;
5+ import 'package:survey_flutter/storage/secure_storage.dart' ;
6+
7+ import '../di/provider/flutter_secure_storage.dart' ;
8+
9+ final secureStorageProvider = Provider <SecureStorage >((_) {
10+ return SecureStorageImpl (FlutterSecureStorageProvider ().getStorage ());
11+ });
12+
13+ class SecureStorageImpl extends SecureStorage {
14+ final FlutterSecureStorage _storage;
15+ SecureStorageImpl (this ._storage);
16+
17+ @override
18+ Future <M > get <M extends SecureStorageModel >(
19+ {required String value, required SecureStorageKey key}) async {
20+ final rawValue = await _storage.read (key: key.string);
21+ if (rawValue == null ) {
22+ throw SecureStorageError .failToRead;
23+ }
24+
25+ final decodedValue = await jsonDecode (rawValue);
26+ if (decodedValue == null ) {
27+ throw SecureStorageError .failToParse;
28+ }
29+
30+ return decodedValue;
31+ }
32+
33+ @override
34+ Future <void > save <M extends SecureStorageModel >(
35+ {required M value, required SecureStorageKey key}) async {
36+ final encodedValue = jsonEncode (value);
37+ await _storage.write (key: key.string, value: encodedValue);
38+ }
39+ }
Original file line number Diff line number Diff line change @@ -288,6 +288,54 @@ packages:
288288 url: "https://pub.dev"
289289 source: hosted
290290 version: "2.3.6"
291+ flutter_secure_storage:
292+ dependency: "direct main"
293+ description:
294+ name: flutter_secure_storage
295+ sha256: "98352186ee7ad3639ccc77ad7924b773ff6883076ab952437d20f18a61f0a7c5"
296+ url: "https://pub.dev"
297+ source: hosted
298+ version: "8.0.0"
299+ flutter_secure_storage_linux:
300+ dependency: transitive
301+ description:
302+ name: flutter_secure_storage_linux
303+ sha256: "0912ae29a572230ad52d8a4697e5518d7f0f429052fd51df7e5a7952c7efe2a3"
304+ url: "https://pub.dev"
305+ source: hosted
306+ version: "1.1.3"
307+ flutter_secure_storage_macos:
308+ dependency: transitive
309+ description:
310+ name: flutter_secure_storage_macos
311+ sha256: "083add01847fc1c80a07a08e1ed6927e9acd9618a35e330239d4422cd2a58c50"
312+ url: "https://pub.dev"
313+ source: hosted
314+ version: "3.0.0"
315+ flutter_secure_storage_platform_interface:
316+ dependency: transitive
317+ description:
318+ name: flutter_secure_storage_platform_interface
319+ sha256: b3773190e385a3c8a382007893d678ae95462b3c2279e987b55d140d3b0cb81b
320+ url: "https://pub.dev"
321+ source: hosted
322+ version: "1.0.1"
323+ flutter_secure_storage_web:
324+ dependency: transitive
325+ description:
326+ name: flutter_secure_storage_web
327+ sha256: "42938e70d4b872e856e678c423cc0e9065d7d294f45bc41fc1981a4eb4beaffe"
328+ url: "https://pub.dev"
329+ source: hosted
330+ version: "1.1.1"
331+ flutter_secure_storage_windows:
332+ dependency: transitive
333+ description:
334+ name: flutter_secure_storage_windows
335+ sha256: fc2910ec9b28d60598216c29ea763b3a96c401f0ce1d13cdf69ccb0e5c93c3ee
336+ url: "https://pub.dev"
337+ source: hosted
338+ version: "2.0.0"
291339 flutter_svg:
292340 dependency: "direct main"
293341 description:
Original file line number Diff line number Diff line change @@ -47,6 +47,7 @@ dependencies:
4747 equatable : ^2.0.0
4848 internet_connection_checker : ^1.0.0+1
4949 page_view_dot_indicator : ^2.1.0
50+ flutter_secure_storage : ^8.0.0
5051
5152dev_dependencies :
5253 build_runner : ^2.4.4
You can’t perform that action at this time.
0 commit comments