Skip to content

Commit 471cf04

Browse files
authored
Merge pull request #7 from XuanHanTan/main
Added retrieving string array, getting values of individual types
2 parents 6f581a5 + 7831591 commit 471cf04

5 files changed

Lines changed: 107 additions & 7 deletions

File tree

example/ios/Podfile.lock

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
PODS:
22
- Flutter (1.0.0)
3-
- shared_preference_app_group (0.3.0):
3+
- shared_preference_app_group (1.0.0):
44
- Flutter
55

66
DEPENDENCIES:
@@ -15,7 +15,7 @@ EXTERNAL SOURCES:
1515

1616
SPEC CHECKSUMS:
1717
Flutter: 50d75fe2f02b26cc09d224853bb45737f8b3214a
18-
shared_preference_app_group: 4b43f9c787e876bfabf6805735677e3dec276bec
18+
shared_preference_app_group: 83d2284f9e747839c40fc281403b5b60d83e2989
1919

2020
PODFILE CHECKSUM: 8e679eca47255a8ca8067c4c67aab20e64cb974d
2121

example/ios/Runner/Info.plist

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,5 +41,7 @@
4141
</array>
4242
<key>UIViewControllerBasedStatusBarAppearance</key>
4343
<false/>
44+
<key>CADisableMinimumFrameDurationOnPhone</key>
45+
<true/>
4446
</dict>
4547
</plist>

example/lib/main.dart

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,19 +38,22 @@ class _MyAppState extends State<MyApp> {
3838
SharedPreferenceAppGroup.setString('MY_STRING_KEY', 'STRING_VALUE');
3939
SharedPreferenceAppGroup.setInt('MY_INT_KEY', 42);
4040
SharedPreferenceAppGroup.setDouble('MY_DOUBLE_KEY', 9.9);
41+
SharedPreferenceAppGroup.setStringList('MY_STRING_ARRAY', ["element1", "element2", "element3"]);
4142
}
4243

4344
Future<void> getMyParams() async {
44-
bool boolValue = await SharedPreferenceAppGroup.get('MY_BOOL_KEY');
45-
String stringValue = await SharedPreferenceAppGroup.get('MY_STRING_KEY');
46-
int intValue = await SharedPreferenceAppGroup.get('MY_INT_KEY');
47-
double doubleValue = await SharedPreferenceAppGroup.get('MY_DOUBLE_KEY');
45+
bool boolValue = await SharedPreferenceAppGroup.getBool('MY_BOOL_KEY');
46+
String stringValue = await SharedPreferenceAppGroup.getString('MY_STRING_KEY');
47+
int intValue = await SharedPreferenceAppGroup.getInt('MY_INT_KEY');
48+
double doubleValue = await SharedPreferenceAppGroup.getDouble('MY_DOUBLE_KEY');
49+
List<String> stringArrayValue = await SharedPreferenceAppGroup.getStringList('MY_STRING_ARRAY');
4850

4951
this.myParams = {
5052
'MY_BOOL_KEY': boolValue,
5153
'MY_STRING_KEY': stringValue,
5254
'MY_INT_KEY': intValue,
53-
'MY_DOUBLE_KEY': doubleValue
55+
'MY_DOUBLE_KEY': doubleValue,
56+
'MY_STRING_ARRAY': stringArrayValue
5457
};
5558

5659
String text = '';

ios/Classes/SharedPreferenceAppGroupPlugin.m

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,15 @@ - (void)setString:(FlutterMethodCall *)call result:(FlutterResult)result {
8888
result(nil);
8989
}
9090

91+
- (void)setStringArray:(FlutterMethodCall *)call result:(FlutterResult)result {
92+
[self checkAppGroup:result];
93+
94+
NSString *key = call.arguments[@"key"];
95+
NSArray *value = call.arguments[@"value"];
96+
[self.userDefaults setValue:value forKey:key];
97+
result(nil);
98+
}
99+
91100
- (void)get:(FlutterMethodCall *)call result:(FlutterResult)result {
92101
[self checkAppGroup:result];
93102

@@ -96,6 +105,46 @@ - (void)get:(FlutterMethodCall *)call result:(FlutterResult)result {
96105
result(value);
97106
}
98107

108+
- (void)getBool:(FlutterMethodCall *)call result:(FlutterResult)result {
109+
[self checkAppGroup:result];
110+
111+
NSString *key = call.arguments[@"key"];
112+
NSNumber *value = [NSNumber numberWithBool:[self.userDefaults boolForKey:key]];
113+
result(value);
114+
}
115+
116+
- (void)getInt:(FlutterMethodCall *)call result:(FlutterResult)result {
117+
[self checkAppGroup:result];
118+
119+
NSString *key = call.arguments[@"key"];
120+
NSNumber *value = [NSNumber numberWithLong:[self.userDefaults integerForKey:key]];
121+
result(value);
122+
}
123+
124+
- (void)getDouble:(FlutterMethodCall *)call result:(FlutterResult)result {
125+
[self checkAppGroup:result];
126+
127+
NSString *key = call.arguments[@"key"];
128+
NSNumber *value = [NSNumber numberWithDouble:[self.userDefaults doubleForKey:key]];
129+
result(value);
130+
}
131+
132+
- (void)getString:(FlutterMethodCall *)call result:(FlutterResult)result {
133+
[self checkAppGroup:result];
134+
135+
NSString *key = call.arguments[@"key"];
136+
NSString *value = [self.userDefaults stringForKey:key];
137+
result(value);
138+
}
139+
140+
- (void)getStringArray:(FlutterMethodCall *)call result:(FlutterResult)result {
141+
[self checkAppGroup:result];
142+
143+
NSString *key = call.arguments[@"key"];
144+
NSArray<NSString *> *value = [self.userDefaults stringArrayForKey:key];
145+
result(value);
146+
}
147+
99148
- (void)getAll:(FlutterMethodCall *)call result:(FlutterResult)result {
100149
[self checkAppGroup:result];
101150

lib/shared_preference_app_group.dart

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,13 +41,59 @@ class SharedPreferenceAppGroup {
4141
await _setValue('String', key, value);
4242
}
4343

44+
/// Saves a string list [value] to persistent storage under the specified app group.
45+
///
46+
/// If [value] is null, this is equivalent to calling [remove()] on the [key].
47+
static Future<void> setStringList(String key, List<String>? value) async {
48+
await _setValue('StringArray', key, value);
49+
}
50+
4451
/// Reads a value of any type from persistent storage under the specified app group.
4552
///
4653
/// If the persistent storage does not contains [key], then [null] will be returned
4754
static Future<dynamic> get(String key) async {
4855
return await _channel.invokeMethod('get', {'key': key});
4956
}
5057

58+
/// Reads a boolean value from persistent storage under the specified app group.
59+
///
60+
/// If the persistent storage does not contains [key], then [null] will be returned
61+
static Future<bool?> getBool(String key) async {
62+
return await _channel.invokeMethod('getBool', {'key': key});
63+
}
64+
65+
/// Reads a integer value from persistent storage under the specified app group.
66+
///
67+
/// If the persistent storage does not contains [key], then [null] will be returned
68+
static Future<int?> getInt(String key) async {
69+
return await _channel.invokeMethod('getInt', {'key': key});
70+
}
71+
72+
/// Reads a double value from persistent storage under the specified app group.
73+
///
74+
/// If the persistent storage does not contains [key], then [null] will be returned
75+
static Future<double?> getDouble(String key) async {
76+
return await _channel.invokeMethod('getDouble', {'key': key});
77+
}
78+
79+
/// Reads a string value from persistent storage under the specified app group.
80+
///
81+
/// If the persistent storage does not contains [key], then [null] will be returned
82+
static Future<String?> getString(String key) async {
83+
return await _channel.invokeMethod('getString', {'key': key});
84+
}
85+
86+
/// Reads a string array value from persistent storage under the specified app group.
87+
///
88+
/// If the persistent storage does not contains [key], then [null] will be returned
89+
static Future<List<String>?> getStringList(String key) async {
90+
final List? receivedArray = await _channel.invokeMethod('getStringArray', {'key': key});
91+
if (receivedArray != null) {
92+
return receivedArray.cast<String>();
93+
}
94+
return null;
95+
}
96+
5197
/// Reads all key-value pairs from persistent storage under the specified app group.
5298
static Future<Map<String, dynamic>> getAll() async {
5399
Map<dynamic, dynamic> allPrefs = await _channel.invokeMethod('getAll');

0 commit comments

Comments
 (0)