@@ -64,32 +64,20 @@ class EmptyLocalStorage extends LocalStorage {
64
64
/// A [LocalStorage] implementation that implements SharedPreferences as the
65
65
/// storage method.
66
66
class SharedPreferencesLocalStorage extends LocalStorage {
67
- late final SharedPreferences _syncPrefs;
68
-
69
- late final SharedPreferencesAsync _asyncPrefs;
67
+ late final SharedPreferences _prefs;
70
68
71
- SharedPreferencesLocalStorage ({
72
- required this .persistSessionKey,
73
- this .useSharedPreferencesAsync = false ,
74
- });
69
+ SharedPreferencesLocalStorage ({required this .persistSessionKey});
75
70
76
71
final String persistSessionKey;
77
72
78
- final bool useSharedPreferencesAsync;
79
-
80
73
static const _useWebLocalStorage =
81
74
kIsWeb && bool .fromEnvironment ("dart.library.js_interop" );
82
75
83
76
@override
84
77
Future <void > initialize () async {
85
78
if (! _useWebLocalStorage) {
86
79
WidgetsFlutterBinding .ensureInitialized ();
87
-
88
- if (useSharedPreferencesAsync) {
89
- _asyncPrefs = SharedPreferencesAsync ();
90
- } else {
91
- _syncPrefs = await SharedPreferences .getInstance ();
92
- }
80
+ _prefs = await SharedPreferences .getInstance ();
93
81
}
94
82
}
95
83
@@ -98,36 +86,77 @@ class SharedPreferencesLocalStorage extends LocalStorage {
98
86
if (_useWebLocalStorage) {
99
87
return web.hasAccessToken (persistSessionKey);
100
88
}
101
-
102
- return switch (useSharedPreferencesAsync) {
103
- true => _asyncPrefs.containsKey (persistSessionKey),
104
- false => Future .value (_syncPrefs.containsKey (persistSessionKey)),
105
- };
89
+ return _prefs.containsKey (persistSessionKey);
106
90
}
107
91
108
92
@override
109
93
Future <String ?> accessToken () async {
110
94
if (_useWebLocalStorage) {
111
95
return web.accessToken (persistSessionKey);
112
96
}
97
+ return _prefs.getString (persistSessionKey);
98
+ }
99
+
100
+ @override
101
+ Future <void > removePersistedSession () async {
102
+ if (_useWebLocalStorage) {
103
+ web.removePersistedSession (persistSessionKey);
104
+ } else {
105
+ await _prefs.remove (persistSessionKey);
106
+ }
107
+ }
108
+
109
+ @override
110
+ Future <void > persistSession (String persistSessionString) {
111
+ if (_useWebLocalStorage) {
112
+ return web.persistSession (persistSessionKey, persistSessionString);
113
+ }
114
+ return _prefs.setString (persistSessionKey, persistSessionString);
115
+ }
116
+ }
117
+
118
+ /// A [LocalStorage] implementation that implements SharedPreferencesAsync as the
119
+ /// storage method.
120
+ class SharedPreferencesAsyncLocalStorage extends LocalStorage {
121
+ late final SharedPreferencesAsync _prefs;
122
+
123
+ SharedPreferencesAsyncLocalStorage ({required this .persistSessionKey});
113
124
114
- return switch (useSharedPreferencesAsync) {
115
- true => _asyncPrefs.getString (persistSessionKey),
116
- false => Future .value (_syncPrefs.getString (persistSessionKey)),
117
- };
125
+ final String persistSessionKey;
126
+
127
+ static const _useWebLocalStorage =
128
+ kIsWeb && bool .fromEnvironment ("dart.library.js_interop" );
129
+
130
+ @override
131
+ Future <void > initialize () async {
132
+ if (! _useWebLocalStorage) {
133
+ WidgetsFlutterBinding .ensureInitialized ();
134
+ _prefs = SharedPreferencesAsync ();
135
+ }
136
+ }
137
+
138
+ @override
139
+ Future <bool > hasAccessToken () async {
140
+ if (_useWebLocalStorage) {
141
+ return web.hasAccessToken (persistSessionKey);
142
+ }
143
+ return _prefs.containsKey (persistSessionKey);
144
+ }
145
+
146
+ @override
147
+ Future <String ?> accessToken () async {
148
+ if (_useWebLocalStorage) {
149
+ return web.accessToken (persistSessionKey);
150
+ }
151
+ return _prefs.getString (persistSessionKey);
118
152
}
119
153
120
154
@override
121
155
Future <void > removePersistedSession () async {
122
156
if (_useWebLocalStorage) {
123
157
web.removePersistedSession (persistSessionKey);
124
158
} else {
125
- switch (useSharedPreferencesAsync) {
126
- case true :
127
- await _asyncPrefs.remove (persistSessionKey);
128
- case false :
129
- await _syncPrefs.remove (persistSessionKey);
130
- }
159
+ await _prefs.remove (persistSessionKey);
131
160
}
132
161
}
133
162
@@ -136,10 +165,7 @@ class SharedPreferencesLocalStorage extends LocalStorage {
136
165
if (_useWebLocalStorage) {
137
166
return web.persistSession (persistSessionKey, persistSessionString);
138
167
}
139
- return switch (useSharedPreferencesAsync) {
140
- true => _asyncPrefs.setString (persistSessionKey, persistSessionString),
141
- false => _syncPrefs.setString (persistSessionKey, persistSessionString),
142
- };
168
+ return _prefs.setString (persistSessionKey, persistSessionString);
143
169
}
144
170
}
145
171
0 commit comments