-
Notifications
You must be signed in to change notification settings - Fork 13
/
Copy pathpreferences_service.dart
135 lines (103 loc) · 4.13 KB
/
preferences_service.dart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
// Flutter imports:
// Package imports:
import 'package:shared_preferences/shared_preferences.dart';
// Project imports:
import 'package:notredame/constants/preferences_flags.dart';
// CONSTANT
class PreferencesService {
final persistentsKey = [
PreferencesFlag.discoveryDashboard,
PreferencesFlag.discoveryETS,
PreferencesFlag.discoveryGradeDetails,
PreferencesFlag.discoveryMore,
PreferencesFlag.discoverySchedule,
PreferencesFlag.discoveryStudentGrade,
PreferencesFlag.discoveryStudentProfile,
PreferencesFlag.ratingTimer,
PreferencesFlag.hasRatingBeenRequested
];
Future<bool> setBool(PreferencesFlag flag, {required bool value}) async {
final SharedPreferences prefs = await SharedPreferences.getInstance();
return prefs.setBool(flag.toString(), value);
}
Future<bool> setString(PreferencesFlag flag, String value) async {
final SharedPreferences prefs = await SharedPreferences.getInstance();
return prefs.setString(flag.toString(), value);
}
Future<bool> setDynamicString(
PreferencesFlag flag, String key, String value) async {
final SharedPreferences prefs = await SharedPreferences.getInstance();
return prefs.setString('${flag}_$key', value);
}
Future<void> clear() async {
final SharedPreferences prefs = await SharedPreferences.getInstance();
await prefs.clear();
}
/// Get persitent flags and reput them in the cache once the clear is done
Future<void> clearWithoutPersistentKey() async {
final SharedPreferences prefs = await SharedPreferences.getInstance();
final Map<PreferencesFlag, dynamic> allPersistentPrefs = {};
// Save the persistent flags
for (final flag in persistentsKey) {
final value = prefs.get(flag.toString());
if (value != null) {
allPersistentPrefs[flag] = value;
}
}
// Clear the cache
prefs.clear();
// Put the persistent flags back in the preferences
allPersistentPrefs.forEach((key, value) async {
if (value is bool) {
await setBool(key, value: value);
} else if (value is String) {
await setString(key, value);
}
});
}
Future<Object?> getPreferencesFlag(PreferencesFlag flag) async {
final SharedPreferences prefs = await SharedPreferences.getInstance();
return prefs.get(flag.toString());
}
Future<bool> removePreferencesFlag(PreferencesFlag flag) async {
final SharedPreferences prefs = await SharedPreferences.getInstance();
return prefs.remove(flag.toString());
}
Future<bool> removeDynamicPreferencesFlag(
PreferencesFlag flag, String key) async {
final SharedPreferences prefs = await SharedPreferences.getInstance();
return prefs.remove('${flag}_$key');
}
Future<bool> setInt(PreferencesFlag flag, int value) async {
final SharedPreferences prefs = await SharedPreferences.getInstance();
return prefs.setInt(flag.toString(), value);
}
Future<bool> setDateTime(PreferencesFlag flag, DateTime value) async {
final SharedPreferences prefs = await SharedPreferences.getInstance();
return prefs.setString(flag.toString(), value.toIso8601String());
}
Future<bool?> getBool(PreferencesFlag flag) async {
final SharedPreferences prefs = await SharedPreferences.getInstance();
return prefs.getBool(flag.toString());
}
Future<int?> getInt(PreferencesFlag flag) async {
final SharedPreferences prefs = await SharedPreferences.getInstance();
return prefs.getInt(flag.toString());
}
Future<String?> getString(PreferencesFlag flag) async {
final SharedPreferences prefs = await SharedPreferences.getInstance();
return prefs.getString(flag.toString());
}
Future<String?> getDynamicString(PreferencesFlag flag, String key) async {
final SharedPreferences prefs = await SharedPreferences.getInstance();
return prefs.getString('${flag}_$key');
}
Future<DateTime?> getDateTime(PreferencesFlag flag) async {
final SharedPreferences prefs = await SharedPreferences.getInstance();
final flagPreference = prefs.getString(flag.toString());
if (flagPreference != null) {
return DateTime.parse(flagPreference);
}
return null;
}
}